From: =?Windows-1252?Q?Enregistr=E9_par_Windows_Internet_Explorer=A07?= Subject: =?Windows-1252?Q?=BB_Claude_B=E9land?= Date: Sat, 1 May 2010 16:24:56 -0400 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CAE94A.D5FD7610" X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6000.16669 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.seletlumieretv.org/blogue/?tag=claude-beland =EF=BB=BF =C2=BB Claude = B=C3=A9land

Articles tagu=C3=A9s : Claude B=C3=A9land

Claude B=C3=A9land=20 aux C du V: pour une =C3=A9conomie solidaire


Obtenir=20 le lecteur Flash pour = voir cette=20 vid=C3=A9o.

Un an apr=C3=A8s les grandes remises en question provoqu=C3=A9es par = la crise=20 =C3=A9conomique, les choses ont-elles chang=C3=A9es ? Comment sortir du = statu quo ?

Claude B=C3=A9land y va de suggestions dans son livre Plaidoyer = pour une=20 =C3=A9conomie solidaire. L=E2=80=99ancien directeur = g=C3=A9n=C3=A9ral du Mouvement Desjardins=20 parle du vide laiss=C3=A9 par l=E2=80=99=C3=89glise pour discerner le = bien et le mal ainsi=20 que des valeurs de partage qui doivent guider = l=E2=80=99=C3=A9conomie.

L=E2=80=99=C3=A9mission est disponible en ligne et sera diffus=C3=A9e = en rappel samedi =C3=A0 19h30=20 et 23h30.

3DRSS=20=20  Flux = RSS des=20 articles | Flux = RSS des=20 commentaires

est propuls=C3=A9 par WordPress

Th=C3=A8mes WordPress - WordPress = tuto

------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.seletlumieretv.org/blogue/wp-content/themes/meadowland-fr/images/category.gif R0lGODlhEAAQAMQAAP////f39/Pz8+bm5uLi4t7e3tra2tbW1tLS0s7OzsXFxcHBwbm5ubGxsamp qZycnJiYmJSUlJCQkIyMjP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUU ABQALAAAAAAQABAAAAVsIEUBJCme6LgsTNOUMKACQ004zzPtkwwsNBthaDAQeiNGwPaAOCNQJCBH FVgLhUNB+gh4BQhEQqFYbH2PQTE8ZjEOXEJYXG41EFJIgV1vOBwJeQVDWAYHYgkGeVCMEo6PUjGS JSmVlpeYmSghADs= ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.seletlumieretv.org/blogue/wp-content/themes/meadowland-fr/images/comment.gif R0lGODlhEAAQAMQAAPn5+ff39/Pz8/Ly8vHx8e/v7+7u7uzs7Onp6ebm5tzc3NDQ0MrKysnJycPD w8HBwb29vbm5ubKysqysrKioqKKioqGhoZycnJiYmJaWlo2NjYuLi4iIiP///wAAAAAAACH5BAUU AB0ALAAAAAAQABAAAAVeYCeOZGmeJiBtXOtylEFOD3A2mN0BXBcMwEHhcOhYEiJCphMsDA+IzkSR XAKdRER0KuIxsdoEsoIU0UiFxKCD0+0krohIELnIUBhDZONAiSARGgx+IgYYC4SJiouEIQA7 ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.seletlumieretv.org/blogue/wp-content/themes/meadowland-fr/images/feed-icon-16x16.gif R0lGODlhEAAQAOYAAPSRNut/MvqcOfudOviZOfz18P/58+6FNOh5MeZ/M/aUN/KNNeZ0L+mFNfCJ NO6FM/748uNuLv7y5tpeKud4L+yKNuF4MeyBMuBqLep9MeN5MuN5MfmdQeiDNN5lLP3x5t5vL99x MNxhK/3ateF0MOuJNeiFNf738uV0LuJ2MeeBM95wMOV8MuiCNPzChOqHNd1uL+R7MuV9MumINvqs XvrOp/ivae6RTPSmZ+6aZPnIm+l+OfS9mPieRO+NQe6rif7s2vmlUu6ylfG3l/u5d+B1RfOkZ++d ZPSsc/zZtfetaf3fwf7x5vKjZuaLYPi/jvabRPKTQvSygPupUvqiRv7mzvfDmfi0deyWY/ehUOiJ VffUvvWpaPzjzfrDj+qJSfXAmPW/mf3lzfmfRfvm2PnXv+JwNvq+g/uvXuR8R/qzavrTs/eXOPma OfWSN/GLNeqwh////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 BAAAAAAALAAAAAAQABAAAAfpgAVwFhsxMgkqHQ0vJRUzcII7KBQZFw8OCwAKbG0CHIMoXzxgTZia nAIDBCYbFEdxsBA6UKiqbg0xGTdWax+wBkSpBG5vLTKWpjZAsC7DbwcJCQ84EF1ePW0jsFfPASwq DlywcQZoA0lxED4BCBodmVlnEuQ0br5hCAwpDadtVNpMoiCJc4JBBBIvNi2p4mLMPCkBTsTRgiFE CTZqYIlx8yROGQRb4vzwAKJCmykG4tR4YyQOGQZD4ggRAWNGqiBKuuXAEiGNkyITVsDh4OwAO4MY PIiYYAYSHBMNWiRgoSEFiRAgYAgtEAgAOw== ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://seletlumieretv.org/images/advertising/br_andre_FR_01c.jpg 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 2Q== ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.seletlumieretv.org/blogue/wp-content/themes/meadowland-fr/style.css BODY { FONT-SIZE: 95%; BACKGROUND: #fff; MARGIN: 0px; COLOR: #333; = FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; TEXT-ALIGN: center } #wrapper { BORDER-RIGHT: #fff 2px solid; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = FONT-SIZE: 75%; BACKGROUND: #fff; PADDING-BOTTOM: 0px; MARGIN: 0px auto; = BORDER-LEFT: #fff 2px solid; WIDTH: 770px; LINE-HEIGHT: 20px; = PADDING-TOP: 0px; TEXT-ALIGN: left } #header { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ccc; = PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-TOP: 1px; HEIGHT: 100px } #header-inner { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #content { CLEAR: both; PADDING-RIGHT: 5px; PADDING-LEFT: 10px; BACKGROUND: #fff; = PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 5px } #main { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 10px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 550px; PADDING-TOP: 5px } #sidebar { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; = PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 560px; PADDING-TOP: 0px } #footer { CLEAR: both; PADDING-RIGHT: 16px; PADDING-LEFT: 16px; FONT-SIZE: 85%; = PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-TOP: 10px; TEXT-ALIGN: center } #footer-inner { BACKGROUND: #f2f2f2; HEIGHT: 50px } #footer P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: = 0px; PADDING-TOP: 15px } #navigation { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } #navigation DIV.fleft { FLOAT: left } #navigation DIV.fright { FLOAT: right } #credit { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px; TEXT-ALIGN: right } #credit P { FONT-SIZE: 85%; MARGIN: 0px; COLOR: #777 } #credit P A { FONT-WEIGHT: 100; COLOR: #999 } #credit P A:hover { FONT-WEIGHT: 100; COLOR: #999 } P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H4 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H5 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H6 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 10px 0px; PADDING-TOP: 0px } H1 { FONT-FAMILY: Verdana, sans-serif } H2 { FONT-FAMILY: Verdana, sans-serif } H3 { FONT-FAMILY: Verdana, sans-serif } H4 { FONT-FAMILY: Verdana, sans-serif } H5 { FONT-FAMILY: Verdana, sans-serif } H6 { FONT-FAMILY: Verdana, sans-serif } H1 { FONT-SIZE: 190% } H2 { FONT-SIZE: 160% } H3 { FONT-SIZE: 120% } H4 { FONT-SIZE: 110% } H5 { FONT-SIZE: 100% } H6 { FONT-SIZE: 70% } A { FONT-WEIGHT: 800; COLOR: #2768aa; TEXT-DECORATION: none } A:hover { COLOR: #8ebeef; TEXT-DECORATION: underline } A IMG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 15px; PADDING-LEFT: 15px; = BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 15px; = PADDING-TOP: 15px; BORDER-RIGHT-WIDTH: 0px } HR { BORDER-TOP: #ccc 1px solid; MARGIN: 5px 0px; BORDER-BOTTOM: #ccc 1px = solid; HEIGHT: 2px } BLOCKQUOTE { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; BACKGROUND: #f4f4f4; = PADDING-BOTTOM: 5px; MARGIN: 3px 30px; PADDING-TOP: 5px } FORM { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } FIELDSET { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: = 0px; BORDER-TOP-STYLE: none; PADDING-TOP: 10px; BORDER-RIGHT-STYLE: = none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none } LEGEND { FONT-WEIGHT: 800 } CODE { FONT-SIZE: 90%; FONT-FAMILY: "Courier New", Courier, monospace; = WHITE-SPACE: pre } TD { VERTICAL-ALIGN: top } .aligncenter { PADDING-RIGHT: 0.4em; DISPLAY: block; PADDING-LEFT: 0.4em; = PADDING-BOTTOM: 0.4em; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; = PADDING-TOP: 0.4em } DIV.aligncenter { PADDING-RIGHT: 0.4em; DISPLAY: block; PADDING-LEFT: 0.4em; = PADDING-BOTTOM: 0.4em; MARGIN-LEFT: auto; MARGIN-RIGHT: auto; = PADDING-TOP: 0.4em } .alignleft { PADDING-RIGHT: 0.4em; PADDING-LEFT: 0.4em; FLOAT: left; PADDING-BOTTOM: = 0.4em; PADDING-TOP: 0.4em } .alignright { PADDING-RIGHT: 0.4em; PADDING-LEFT: 0.4em; FLOAT: right; = PADDING-BOTTOM: 0.4em; PADDING-TOP: 0.4em } .wp-caption { BORDER-RIGHT: #ddd 1px solid; BORDER-TOP: #ddd 1px solid; MARGIN: 10px; = BORDER-LEFT: #ddd 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #ddd 1px = solid; BACKGROUND-COLOR: #f3f3f3; TEXT-ALIGN: center; = -moz-border-radius: 3px; -khtml-border-radius: 3px; = -webkit-border-radius: 3px; border-radius: 3px } .wp-caption IMG { BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px; BORDER-LEFT: 0px; = BORDER-BOTTOM: 0px } .wp-caption P.wp-caption-text { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 11px; PADDING-BOTTOM: = 5px; MARGIN: 0px; LINE-HEIGHT: 17px; PADDING-TOP: 0px } #tabs { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: gray; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } #tabs UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 3px; MARGIN: = 0px; PADDING-TOP: 3px; LIST-STYLE-TYPE: none } #tabs UL LI { BORDER-RIGHT: #fff 2px solid; PADDING-RIGHT: 15px; DISPLAY: inline; = PADDING-LEFT: 0px; FONT-SIZE: 90%; PADDING-BOTTOM: 6px; MARGIN: 10px 0px = 3px 15px; PADDING-TOP: 6px; FONT-FAMILY: Tahoma, Arial, sans-serif } #tabs UL LI A { COLOR: white } #tabs UL LI A:hover { COLOR: #a1e7fd; TEXT-DECORATION: none } FORM#searchform2 { DISPLAY: block; FLOAT: right; MARGIN: 10px 10px 0px 5px } #header H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 18px } #header H3 A { FONT-WEIGHT: 100; FONT-SIZE: 220%; COLOR: #fff; LETTER-SPACING: 1px; = TEXT-DECORATION: none } #header H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-WEIGHT: 800; FONT-SIZE: = 100%; PADDING-BOTTOM: 5px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 10px; = LETTER-SPACING: 1px } H2#sectiontitle { PADDING-RIGHT: 6px; PADDING-LEFT: 10px; FONT-WEIGHT: 800; FONT-SIZE: = 100%; BACKGROUND: #f2f2f2; PADDING-BOTTOM: 6px; MARGIN: 8px 10px 5px; = COLOR: #444; PADDING-TOP: 6px; FONT-FAMILY: arial, verdana, sans-serif } .post { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px = 0px 10px; PADDING-TOP: 0px } .entry { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 3px; MARGIN: = 0px; PADDING-TOP: 0px } .post H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 2px; FONT-WEIGHT: 100; FONT-SIZE: = 150%; PADDING-BOTTOM: 2px; MARGIN: 10px 0px 15px; COLOR: #2768aa; = PADDING-TOP: 7px } .post H2 A { FONT-WEIGHT: 100; COLOR: #2768aa; TEXT-DECORATION: none } .post H2 A:hover { COLOR: #333; TEXT-DECORATION: none } .postmetadata { PADDING-RIGHT: 8px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 5px; = FONT-SIZE: 80%; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-TOP: 1px } .postmetadata P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px = 0px; LINE-HEIGHT: 18px; PADDING-TOP: 0px } .date { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; = FONT-WEIGHT: 800; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px 10px 0px = 0px; COLOR: #444; PADDING-TOP: 0px; TEXT-ALIGN: center } .dateDay { DISPLAY: block; FONT-SIZE: 16px; LINE-HEIGHT: 16px; TEXT-ALIGN: center } .dateMonth { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 11px; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 12px; PADDING-TOP: 0px } .dateYear { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 11px; = PADDING-BOTTOM: 0px; LINE-HEIGHT: 12px; PADDING-TOP: 0px } H3#comments { FONT-SIZE: 100%; FONT-FAMILY: verdana, sans-serif } H3#postcomment { FONT-SIZE: 100%; FONT-FAMILY: verdana, sans-serif } OL#commentlist { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FONT-SIZE: 90%; PADDING-BOTTOM: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } OL#commentlist LI { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } OL#commentlist LI P.commentheader { PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 5px; PADDING-BOTTOM: = 1px; MARGIN: 0px; PADDING-TOP: 1px } UL#commentlist { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } UL#commentlist LI { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 90%; = BACKGROUND: #f2f2f2; PADDING-BOTTOM: 0px; MARGIN: 0px 15px 5px; = PADDING-TOP: 0px } UL#commentlist P { MARGIN: 6px 0px } UL#commentlist LI DIV.comm { PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; MARGIN: = 1px; PADDING-TOP: 1px } UL#commentlist LI DIV.gravatar { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FLOAT: left; PADDING-BOTTOM: = 0px; WIDTH: 50px; PADDING-TOP: 10px } UL#commentlist LI DIV.gravatar IMG { BORDER-RIGHT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-LEFT: = #ccc 2px solid; BORDER-BOTTOM: #ccc 2px solid } UL#commentlist LI DIV.commenttext { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 5px = 10px 5px 65px; PADDING-TOP: 0px } UL#commentlist LI DIV.commenttext DIV.commentwrapper { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 3px; MARGIN: 0px = 0px 0px 5px; PADDING-TOP: 3px } #subscribe P { FONT-SIZE: 85%; MARGIN: 3px 0px 10px } .menu { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 90%; PADDING-BOTTOM: = 0px; PADDING-TOP: 0px } .menu A { FONT-WEIGHT: 100 } .menu A:hover { TEXT-DECORATION: none } .menu UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } .menu UL LI.widget { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: = 0px; PADDING-TOP: 2px } .menu UL LI.widget UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .menu UL LI.widget UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 2px; MARGIN: = 0px; PADDING-TOP: 2px; BORDER-BOTTOM: #ccc 1px dotted } .menu UL LI.widget UL LI UL { =09 } .menu UL LI.widget UL LI UL LI { PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-LEFT: 15px; = PADDING-BOTTOM: 2px; PADDING-TOP: 2px; BORDER-BOTTOM-STYLE: none! = important } .menu UL LI.widget H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 4px; FONT-WEIGHT: 800; FONT-SIZE: = 120%; PADDING-BOTTOM: 1px; MARGIN: 0px; COLOR: #333; PADDING-TOP: 2px; = BORDER-BOTTOM: #2768aa 2px solid; FONT-FAMILY: arial; FONT-VARIANT: = small-caps } .menu UL LI H3 A { FONT-WEIGHT: 800; COLOR: #333 } .menu UL LI H3 A:hover { COLOR: #333; TEXT-DECORATION: none } .menu FORM { PADDING-RIGHT: 4px; DISPLAY: block; PADDING-LEFT: 4px; PADDING-BOTTOM: = 4px; MARGIN: 0px; PADDING-TOP: 4px } .menu INPUT { FONT-SIZE: 90%; MARGIN: 3px 0px } LI.widget .textwidget { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } LI.widget #search { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } #wp-calendar { MARGIN: 10px auto 0px; WIDTH: 155px; empty-cells: show } #wp-calendar #next A { PADDING-RIGHT: 10px; TEXT-ALIGN: right } #wp-calendar #prev A { PADDING-LEFT: 10px; TEXT-ALIGN: left } #wp-calendar A { DISPLAY: block } #wp-calendar CAPTION { WIDTH: 100%; TEXT-ALIGN: center } #wp-calendar TD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 3px; = PADDING-TOP: 3px; TEXT-ALIGN: center } #footer A { FONT-WEIGHT: 100 } #wp-admin-bar { CLEAR: both; BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 5px; = BORDER-TOP: #666 1px solid; PADDING-LEFT: 5px; BACKGROUND: #f9f9f9; = PADDING-BOTTOM: 5px; MARGIN: 0px; BORDER-LEFT: #666 1px solid; = PADDING-TOP: 5px; BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: center; = align: center } #wp-admin-bar UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #wp-admin-bar UL LI { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px 10px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.seletlumieretv.org/blogue/wp-content/plugins/zd-scribd-ipaper/assets/lightview2.5/css/lightview.css #lightview { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 50%; PADDING-BOTTOM: 0px; = MARGIN: -75px 0px 0px -75px; WIDTH: 150px; PADDING-TOP: 0px; POSITION: = absolute; TOP: 50%; HEIGHT: 150px; TEXT-ALIGN: left } .lv_Container { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; = PADDING-TOP: 0px; POSITION: relative; HEIGHT: 100% } .lv_Button { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: pointer; = BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; = BORDER-LEFT-STYLE: none; TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: = none } .lv_Sides { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 0px; = POSITION: absolute; TOP: 50% } .lv_Sides * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .lv_Sides LI { LIST-STYLE-TYPE: none; POSITION: relative } .lv_PrevSide { FLOAT: left } .lv_NextSide { FLOAT: right } .lv_Sides .lv_Wrapper { WIDTH: 100%; CURSOR: pointer; HEIGHT: 100% } .lv_Sides .lv_Button { BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left } .lv_Frames { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 100%; PADDING-TOP: 0px; POSITION: relative; HEIGHT: 100% } .lv_Frames LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } .lv_Frame { DISPLAY: block; WIDTH: 100% } .lv_Frame * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .lv_FrameTop { DISPLAY: block; LEFT: 0px; WIDTH: 100%; POSITION: absolute } .lv_FrameBottom { CLEAR: both; FLOAT: left; POSITION: relative } .lv_Liquid { CLEAR: both; FLOAT: left; OVERFLOW: hidden; WIDTH: 100%; POSITION: = relative } .lv_Liquid .lv_Filler { LEFT: 50%; WIDTH: 2px; POSITION: absolute; TOP: 0px; HEIGHT: 100% } .lv_Half { CLEAR: both; DISPLAY: block; LINE-HEIGHT: 0px; HEIGHT: 100% } .lv_Half LI { LIST-STYLE-TYPE: none } .lv_Corner { FLOAT: left; POSITION: relative } .lv_CornerTr { FLOAT: right } .lv_CornerBr { FLOAT: right } .lv_Fill { WIDTH: 100%; POSITION: absolute; TOP: 0px; HEIGHT: 100% } .lv_Half .lv_CornerWrapper { FLOAT: left; OVERFLOW: hidden; WIDTH: 50%; POSITION: relative; HEIGHT: = 100% } .lv_HalfRight .lv_CornerWrapper { FLOAT: right } .lv_Corner { POSITION: relative } .lv_Corner canvas { POSITION: relative } .lv_HalfLeft .lv_Corner { FLOAT: left } .lv_HalfRight .lv_Corner { FLOAT: right; POSITION: relative } .lv_Center { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none = transparent scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; = OVERFLOW: hidden; PADDING-TOP: 0px; POSITION: relative; HEIGHT: 100% } .lv_WrapUp { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; = MARGIN: 0px; OVERFLOW: hidden; WIDTH: 100%; PADDING-TOP: 0px; POSITION: = absolute; HEIGHT: 100% } .lv_WrapDown { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; OVERFLOW: hidden; WIDTH: 100%; PADDING-TOP: 0px; POSITION: = relative; HEIGHT: 100% } .lv_WrapCenter { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; POSITION: relative } .lv_Loading { LEFT: 50%; POSITION: absolute; TOP: 50% } .lv_Loading .lv_Button { FLOAT: left; WIDTH: 100%; HEIGHT: 100% } .lv_MediaWrapper { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 100%; = PADDING-TOP: 0px; POSITION: relative } .lv_MediaWrapper IMG { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: relative } .lv_PrevNext { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; = MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 0px; POSITION: absolute; TOP: = 0px; HEIGHT: 100% } .lv_PrevNext * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .lv_PrevNext .lv_Button { POSITION: relative; HEIGHT: 100% } .lv_PrevButton { FLOAT: left } .lv_NextButton { FLOAT: right } .lv_MenuBar { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; FONT: 11px Arial, Helvetica, sans-serif; WIDTH: 100%; = COLOR: #7a7a7a; PADDING-TOP: 0px; POSITION: relative; TEXT-ALIGN: left } .lv_MenuBar * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .lv_Close { FLOAT: right; OVERFLOW: hidden; WIDTH: 100%; POSITION: relative; = HEIGHT: 100% } .lv_Data { FLOAT: left; PADDING-BOTTOM: 3px; OVERFLOW: hidden; LINE-HEIGHT: 13px; = POSITION: relative } .lv_Data LI { MARGIN-TOP: 3px; FLOAT: left; LIST-STYLE-TYPE: none } .lv_DataText { WIDTH: 100% } .lv_DataText .lv_Title { FONT-WEIGHT: bold; MARGIN-BOTTOM: 2px } .lv_DataText .lv_Caption { CLEAR: both } .lv_Data .lv_ImgNumber { MARGIN-TOP: 5px; COLOR: #a7a7a7; MARGIN-RIGHT: 5px } .lv_Data .lv_innerPrevNext { PADDING-RIGHT: 5px; MARGIN-TOP: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: = 0px; VERTICAL-ALIGN: middle; BORDER-LEFT: #d7d7d7 1px solid; = PADDING-TOP: 0px; POSITION: relative } .lv_Data .lv_Slideshow { PADDING-RIGHT: 5px; MARGIN-TOP: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: = 0px; VERTICAL-ALIGN: middle; BORDER-LEFT: #d7d7d7 1px solid; = PADDING-TOP: 0px; POSITION: relative } .lv_Data .lv_Slideshow { PADDING-RIGHT: 0px } .lv_Data .lv_innerPrevNext .lv_Button { BACKGROUND-POSITION: left center; FLOAT: left; BACKGROUND-REPEAT: = no-repeat } .lv_Data .lv_Slideshow .lv_Button { BACKGROUND-POSITION: left center; FLOAT: left; BACKGROUND-REPEAT: = no-repeat } .lv_contentTop { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: relative } .lv_contentBottom { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: relative } #lightview IFRAME { BORDER-TOP-WIDTH: 0px; CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: = 0px; BORDER-LEFT-WIDTH: 0px; BACKGROUND: none transparent scroll repeat = 0% 0%; FLOAT: left; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; = MARGIN: 0px; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px } .lv_topButtons { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 0px; PADDING-BOTTOM: 0px; = MARGIN: 0px; OVERFLOW: hidden; WIDTH: 100%; PADDING-TOP: 0px; POSITION: = absolute } .lv_topcloseButtonImage { CURSOR: pointer } #lightviewError P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; = PADDING-TOP: 0px } #lightviewError DIV { PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; FONT: 11px = Arial, Helvetica, sans-serif; PADDING-TOP: 6px } #lightviewError .message { BACKGROUND: #fcb5b5; MARGIN-BOTTOM: 3px; COLOR: #dd1f1f } #lightviewError .type { FONT-WEIGHT: bold } #lightviewError .pluginspage { BACKGROUND: #b5fcbd; COLOR: #21be30 } #lightviewError A { FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: #21be30; BORDER-BOTTOM: #7de689 1px solid; TEXT-DECORATION: none } #lightviewError A:hover { FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: #21be30; BORDER-BOTTOM: #7de689 1px solid; TEXT-DECORATION: none } #lightviewError A:visited { FONT-WEIGHT: bold; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: #21be30; BORDER-BOTTOM: #7de689 1px solid; TEXT-DECORATION: none } #lightviewError P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = MARGIN-LEFT: 0px; PADDING-TOP: 0px } #lv_overlay { LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; HEIGHT: 100% } #lightviewController { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 50%; PADDING-BOTTOM: 0px; = MARGIN: 0px; FONT: 11px Arial, Helvetica, sans-serif; COLOR: #d2d2d2; = BOTTOM: 0px; PADDING-TOP: 0px; POSITION: fixed; TOP: 0px } * HTML BODY #lightviewController { ; MARGIN-TOP: expression( (-1 * this.offsetHeight / 2 + = (document.documentElement ? document.documentElement.scrollTop : 0) + = (Lightview.controllerOffset || 0)) + 'px'); POSITION: absolute; TOP: = auto } #lightviewController UL { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: relative; = HEIGHT: 100% } .lv_controllerTop { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; = PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: relative } .lv_controllerMiddle { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; = PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: relative } .lv_controllerBottom { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; = PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: relative } .lv_controllerCenter { FLOAT: left; WIDTH: auto } .lv_controllerCornerWrapper { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 100%; PADDING-TOP: 0px; POSITION: absolute; HEIGHT: 100% } .lv_controllerCornerWrapperTopLeft { LEFT: -100%; TOP: 0px } .lv_controllerCornerWrapperBottomLeft { LEFT: -100%; TOP: 0px } .lv_controllerCornerWrapperTopRight { LEFT: 100%; TOP: 0px } .lv_controllerCornerWrapperBottomRight { LEFT: 100%; TOP: 0px } #lightviewController .lv_CornerWrapper { WIDTH: 100% } #lightviewController .lv_Corner { FLOAT: left } #lightviewController .lv_Corner { FLOAT: right; POSITION: relative } #lightviewController .lv_CornerTr { FLOAT: left } #lightviewController .lv_CornerBr { FLOAT: left } .lv_controllerBetweenCorners { OVERFLOW: hidden; POSITION: relative; HEIGHT: 100% } .lv_controllerMiddle { FLOAT: left; POSITION: relative; HEIGHT: 100% } .lv_controllerCenter { FLOAT: left; WIDTH: auto } .lv_controllerCenter LI { CLEAR: none; DISPLAY: inline; FLOAT: left; LIST-STYLE-TYPE: none; = POSITION: relative } .lv_controllerSetNumber { FLOAT: left; TEXT-ALIGN: center } #lightviewController .lv_Button { CLEAR: none; FLOAT: left; POSITION: relative; HEIGHT: 100% } .lv_controllerSetNumber { PADDING-RIGHT: 3px; POSITION: relative; HEIGHT: 100% } .lv_controllerPrev { PADDING-LEFT: 3px; FLOAT: left; POSITION: relative; HEIGHT: 100% } .lv_controllerNext { PADDING-LEFT: 3px; FLOAT: left; POSITION: relative; HEIGHT: 100% } .lv_controllerSlideshow { PADDING-LEFT: 3px; FLOAT: left; POSITION: relative; HEIGHT: 100% } .lv_controllerClose { PADDING-LEFT: 3px; FLOAT: left; POSITION: relative; HEIGHT: 100% } .lv_controllerPrev { BORDER-LEFT: #3c3c3c 1px solid } #lightviewController .lv_controllerNext { BORDER-RIGHT: #3c3c3c 1px solid; PADDING-RIGHT: 3px } * HTML #lightview { ; MARGIN-TOP: expression( (-1 * this.offsetHeight / 2 + = (document.documentElement ? document.documentElement.scrollTop : 0) - = (Lightview.controllerHeight || 0)) + 'px'); ; MARGIN-LEFT: expression( = -1 * this.offsetWidth / 2 + (document.documentElement ? = document.documentElement.scrollLeft : 0) + 'px'); POSITION: absolute } HTML #lv_overlay { ; WIDTH: expression(((window.Enumerable && window.Enumerable.max) ? = [document.body.scrollWidth, document.documentElement.scrollWidth, = document.body.offsetWidth, document.documentElement.clientHeight].max() = : document.documentElement.scrollWidth) + 'px' ); POSITION: absolute; ; = HEIGHT: expression(((window.Enumerable && window.Enumerable.max) ? = [document.body.scrollHeight, document.documentElement.scrollHeight, = document.body.offsetHeight, document.documentElement.clientHeight].max() = : document.documentElement.scrollHeight) + 'px' ) } ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.seletlumieretv.org/blogue/wp-content/themes/meadowland-fr/scripts/utils.js function doClear(theText) =0A= {=0A= if (theText.value =3D=3D theText.defaultValue)=0A= {=0A= theText.value =3D ""=0A= }=0A= } ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.scribd.com/javascripts/view.js //this file appears to be written so that does not require prototype, = fyi - tom=0A= if(typeof scribd =3D=3D "undefined") {=0A= =0A= var scribd =3D new Object();=0A= =0A= /* ------------------------=0A= Scribd Document=0A= -------------------------- */=0A= =0A= scribd.Document =3D function() {=0A= =0A= =0A= //Private vars=0A= this.__params =3D [ ]; // document attributes=0A= this.__callQueue =3D [ ]; // stores premature method calls for later = replay, technically a stack (FILO)=0A= this.__listenerLookup =3D { }; // lookup[ eventType:String ] -> [ = callback1:Function, callback2:Function ... ]=0A= =0A= if (arguments.length =3D=3D 2) {=0A= // This option is included for backwards compatibility only!=0A= this.document_id =3D arguments[0];=0A= this.access_key =3D arguments[1];=0A= return this;=0A= }=0A= =0A= if (scribd.Document.caller !=3D scribd.Document.getDoc=0A= && scribd.Document.caller !=3D scribd.Document.getDocFromUrl=0A= && scribd.Document.caller !=3D = scribd.Document.getDocFromUrlForExtension=0A= && scribd.Document.caller !=3D undefined ) {=0A= throw new Error("There is no public constructor for = scribd.Document.");=0A= }=0A= }=0A= =0A= scribd.Document.getDoc =3D function(document_id, access_key) {=0A= scribd_doc =3D new scribd.Document();=0A= scribd_doc.document_id =3D document_id;=0A= scribd_doc.access_key =3D access_key;=0A= return scribd_doc;=0A= }=0A= =0A= scribd.Document.getDocFromUrl =3D function(url, publisher_id) {=0A= scribd_doc =3D new scribd.Document();=0A= scribd_doc.url =3D url;=0A= scribd_doc.publisher_id =3D publisher_id;=0A= return scribd_doc;=0A= }=0A= =0A= scribd.Document.getDocFromUrlForExtension =3D function(url, = extension_id) {=0A= scribd_doc =3D new scribd.Document();=0A= scribd_doc.url =3D url;=0A= scribd_doc.extension_id =3D extension_id;=0A= scribd_doc.addParam("should_redirect", true);=0A= return scribd_doc;=0A= }=0A= =0A= =0A= =0A= scribd.Document.prototype =3D {=0A= /* ---------------=0A= =0A= Private Methods=0A= =0A= Note: Routed events are those which get routed through a globally = defined method: window._scribd_event_handler_embedName()=0A= We define this method to allow message passing between iPaper and this = particular scribd.Document instance. Only used=0A= for browsers which don't adhere to the DOM 2 event specification (IE).=0A= =0A= Workflow:=0A= 1) Assign window._scribd_event_handler_embedName =3D = this.__handleEvent, in this.write()=0A= 2) Add any event listeners to this.__listenerLookup=0A= 3) iPaper calls window._scribd_event_handler_embedName to trigger = events, which get routed back through to this.__handleEvent=0A= 4) Iterate through __listenerLookup, firing the appropriate callbacks=0A= =0A= ----------------- */=0A= =0A= __handleEvent: function( eventType ){=0A= var listeners =3D this.__listenerLookup[eventType] || [];=0A= =0A= for (var i=3D0; i page_height) {=0A= auto_height =3D page_height;=0A= }=0A= =0A= var embedHeight =3D auto_height + "px";=0A= } else {=0A= var embedHeight =3D "100%";=0A= }=0A= =0A= var embedWidth =3D "100%";=0A= var embedName =3D elementId + '_embed' + Math.round(Math.random() * = 9e9);=0A= this.__embedName =3D embedName;=0A= var srcString =3D "ScribdViewer";=0A= =0A= // This defaults to true so we only need to handle explicit false = cases=0A= if (this.__params["auto_size"] !=3D true){=0A= flashVars +=3D '&auto_size=3Dfalse';=0A= }=0A= =0A= if (this.__params["height"] && this.__params["height"] !=3D "parent"){=0A= embedHeight =3D this.__params["height"] + "px";=0A= }=0A= if (this.__params["width"] && this.__params["width"] !=3D "parent"){=0A= embedWidth =3D this.__params["width"] + "px";=0A= }=0A= =0A= // Params=0A= if (this.__params["swf_name"]){=0A= srcString =3D this.__params["swf_name"];=0A= }=0A= =0A= if (this.__params["disable_related_docs"]){=0A= flashVars +=3D '&disable_related_docs=3D' + = this.__params["disable_related_docs"];=0A= }=0A= if (this.__params["page"]){=0A= flashVars +=3D '&page=3D' + this.__params["page"];=0A= }=0A= if (this.__params["extension"]){=0A= flashVars +=3D '&extension=3D' + this.__params["extension"];=0A= }=0A= if (this.__params["title"]){=0A= flashVars +=3D '&title=3D' + escape(this.__params["title"]);=0A= }=0A= if (this.__params["my_user_id"]){=0A= flashVars +=3D '&my_user_id=3D' + this.__params["my_user_id"];=0A= }=0A= if (this.__params["api_url"]){=0A= flashVars +=3D '&api_url=3D' + this.__params["api_url"];=0A= }=0A= if (this.__params["doctype"]){=0A= flashVars +=3D '&doctype=3D' + this.__params["doctype"];=0A= }=0A= if (this.__params["current_user_id"]){=0A= flashVars +=3D '¤t_user_id=3D' + = this.__params["current_user_id"];=0A= }=0A= if (this.__params["search_query"]){=0A= flashVars +=3D '&search_query=3D' + = escape(this.__params["search_query"]);=0A= }=0A= if (this.__params["search_keywords"]){=0A= flashVars +=3D '&search_keywords=3D' + = escape(this.__params["search_keywords"]);=0A= }=0A= if (this.__params["transferCookie"]=3D=3Dtrue){=0A= flashVars +=3D '&cookie=3D' + escape(document.cookie);=0A= }=0A= if (this.__params["should_redirect"]){=0A= flashVars +=3D '&should_redirect=3D' + = this.__params["should_redirect"];=0A= }=0A= if (this.__params["secret_password"]){=0A= flashVars +=3D '&secret_password=3D' + = this.__params["secret_password"];=0A= }=0A= if (this.__params["public"] =3D=3D true){=0A= flashVars +=3D '&privacy=3D0';=0A= }=0A= else {=0A= flashVars +=3D '&privacy=3D1';=0A= }=0A= =0A= if (this.__params["user_identifier"]) {=0A= flashVars +=3D '&user_identifier=3D' + = escape(this.__params["user_identifier"]);=0A= }=0A= if (this.__params["secure_session_id"]) {=0A= flashVars +=3D '&secure_session_id=3D' + = escape(this.__params["secure_session_id"]);=0A= }=0A= if (this.__params["signature"]) {=0A= flashVars +=3D '&signature=3D' + this.__params["signature"];=0A= }=0A= if (this.__params["docinfo"]) {=0A= //need to use encodeURIComponent for '+' and '/' in base64 encoding=0A= flashVars +=3D '&docinfo=3D' + = encodeURIComponent(this.__params["docinfo"]);=0A= }=0A= if (this.__params["useIntegratedUi"]) {=0A= flashVars +=3D '&useIntegratedUi=3D' + = this.__params["useIntegratedUi"];=0A= }=0A= =0A= =0A= =0A= // Document Attributes=0A= if (this.document_id){=0A= flashVars +=3D '&document_id=3D' + this.document_id;=0A= }=0A= if (this.access_key){=0A= flashVars +=3D '&access_key=3D' + this.access_key;=0A= }=0A= if (this.extension_id){=0A= flashVars +=3D '&extension_id=3D' + this.extension_id;=0A= }=0A= if (this.url){=0A= flashVars +=3D '&url=3D' + escape(this.url);=0A= }=0A= if (this.publisher_id){=0A= flashVars +=3D '&publisher_id=3D' + escape(this.publisher_id);=0A= }=0A= =0A= var srcPath =3D "http://d1.scribdassets.com/";=0A= var protocol =3D "http://";=0A= =0A= if (this.__params["use_ssl"] =3D=3D true) {=0A= srcPath =3D "https://s3.amazonaws.com/documents.scribd.com/";=0A= flashVars +=3D "&use_ssl=3Dtrue"; =0A= protocol =3D 'https://';=0A= }=0A= =0A= if (this.__params["src_path"]) {=0A= srcPath =3D this.__params["src_path"];=0A= }=0A= if (this.__params["hide_sample_banner"]){=0A= flashVars +=3D '&hide_sample_banner=3D' + = this.__params["hide_sample_banner"];=0A= }=0A= =0A= if (this.__params["disable_resume_reading"] =3D=3D true){=0A= flashVars +=3D '&disable_resume_reading=3Dtrue';=0A= }=0A= =0A= if (this.__params["hide_full_screen_button"] =3D=3D true){=0A= flashVars +=3D '&hide_full_screen_button=3Dtrue';=0A= }=0A= =0A= if (this.__params["hide_disabled_buttons"] =3D=3D true){=0A= flashVars +=3D '&hide_disabled_buttons=3Dtrue';=0A= }=0A= =0A= if (this.__params["full_screen_type"]){=0A= flashVars +=3D '&full_screen_type=3D' + = this.__params["full_screen_type"];=0A= }=0A= =0A= if (this.__params["custom_logo_image_url"]) {=0A= flashVars +=3D '&custom_logo_image_url=3D' + = escape(this.__params["custom_logo_image_url"]);=0A= }=0A= =0A= if (this.__params["custom_logo_click_url"]) {=0A= flashVars +=3D '&custom_logo_click_url=3D' + = escape(this.__params["custom_logo_click_url"]);=0A= }=0A= =0A= var embedString =3D Mod_AC_FL_RunContent(=0A= 'codebase', protocol + = 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=3D9= ,0,0,0',=0A= 'width', embedWidth, =0A= 'height', embedHeight, =0A= 'flashvars', flashVars, =0A= 'src', srcPath + srcString,=0A= 'quality', 'high', =0A= 'pluginspage', protocol + 'www.macromedia.com/go/getflashplayer', =0A= 'align', 'middle', =0A= 'play', 'true', =0A= 'loop', 'true', =0A= 'scale','showall', =0A= 'wmode', 'opaque', =0A= 'devicefont', 'false', =0A= 'id',embedName, =0A= 'bgcolor', '#ffffff', =0A= 'name', embedName, =0A= 'menu','true', =0A= 'allowFullScreen', 'true', =0A= 'allowScriptAccess','always', =0A= 'movie', srcPath + srcString,=0A= 'salign','');=0A= =0A= var flash_ok =3D DetectFlashVer(9,0,0);=0A= if (!flash_ok) {=0A= embedString =3D '
Hello, you have an old version of Adobe Flash = Player. To use iPaper (and lots of other stuff on the web) you need to = get the latest Flash player.
';=0A= }=0A= =0A= =0A= if(quickswitch) {=0A= =0A= /* For QuickSwitch, we avoid calling innerHTML on an element that = isn't =0A= directly attached to the body. This avoids the IE issue where = calling =0A= innerHTML on a block element that has in its ancestry an inline = element =0A= will throw an exception */=0A= =0A= // set container innerHTML, which is a direct child of body=0A= container.innerHTML =3D embedString;=0A= =0A= // delete all child nodes of element=0A= if (element.hasChildNodes()) {=0A= while (element.childNodes.length >=3D 1) {=0A= element.removeChild(element.firstChild);=0A= }=0A= }=0A= =0A= element.appendChild(container);=0A= }=0A= else=0A= {=0A= element.innerHTML =3D embedString;=0A= }=0A= =0A= var __this =3D this;=0A= =0A= // Event router for IE (which doesn't properly support custom events)=0A= window[ "_scribd_event_handler_" + embedName ] =3D = function(eventType){ __this.__handleEvent(eventType) };=0A= =0A= //=0A= // setupJsApi -- attach event listeners=0A= //=0A= var onSetupJsApi =3D function(e)=0A= { =0A= var e =3D e || {}; // In the case of IE, there will be no Event so = we return an empty object=0A= var target =3D e.srcElement || = document.getElementsByName(embedName)[0];=0A= =0A= if (target.getAttribute('name') =3D=3D embedName)=0A= {=0A= __this.api =3D target;=0A= // Grab the next call on the queue, check to see if it's = actionable, if not push onto a stack which will replace __callQueue=0A= var i, method, callParams, rejectedCalls =3D [];=0A= =0A= for (var i=3D0; i<__this.__callQueue.length; i++)=0A= {=0A= callParams =3D __this.__callQueue[i];=0A= if (callParams[0] =3D=3D "addEventListener") { // Execute all = listener calls=0A= method =3D callParams.shift();=0A= __this[method].apply( __this, callParams );=0A= } else {=0A= rejectedCalls.push( callParams ); // Send back to __callQueue=0A= }=0A= }=0A= __this.__callQueue =3D rejectedCalls; // end callQueue=0A= }=0A= }=0A= =0A= //=0A= // iPaperReady -- pump call queue=0A= //=0A= =0A= var oniPaperReady =3D function(e)=0A= {=0A= var e =3D e || {}; // In the case of IE, there will be no Event so = we return an empty object=0A= var target =3D e.srcElement || = document.getElementsByName(embedName)[0];=0A= =0A= if (target.getAttribute('name') =3D=3D embedName) {=0A= =0A= if (__this.onReady){=0A= __this.onReady();=0A= }=0A= =0A= // Grab the next call on the queue, check to see if it's = actionable, if not push onto a stack which will replace __callQueue = (rejectedCalls)=0A= var i, method, callParams, rejectedCalls =3D [];=0A= for (i=3D0; i<__this.__callQueue.length; i++) {=0A= callParams =3D __this.__callQueue.pop();=0A= if (callParams[0] !=3D "addEventListener") { // Execute all = non-listener calls=0A= method =3D callParams.shift();=0A= if (typeof method !=3D "function") alert(typeof method)=0A= __this[ method ].apply( __this, callParams );=0A= } else {=0A= rejectedCalls.push( callParams ); // Send back to __callQueue=0A= }=0A= }=0A= __this.__callQueue =3D rejectedCalls;=0A= =0A= // TODO: implement this properly - redispatch initial mouse over = event in case browser missed it (firefox, webkit)=0A= =0A= // if (__this.initialMouseOver && target.dispatchEvent)=0A= // {=0A= // var evt =3D = target.ownerDocument.createEvent('MouseEvents');=0A= // evt.initMouseEvent('mouseover', true, true,=0A= // target.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,=0A= // false, false, false, 0, null); =0A= // target.dispatchEvent(evt);=0A= // }=0A= }=0A= }=0A= =0A= =0A= if (window.addEventListener){=0A= window.addEventListener('iPaperReady', oniPaperReady, true);=0A= window.addEventListener('setupJsApi', onSetupJsApi, true)=0A= } else {=0A= // No DOM 2 Support=0A= this.__addRoutedListener('iPaperReady', oniPaperReady);=0A= this.__addRoutedListener('setupJsApi', onSetupJsApi);=0A= }=0A= =0A= // initial mouse over notification (for firefox and chrome)=0A= // this.initialMouseOver =3D false;=0A= // =0A= // if (window.addEventListener){=0A= // element.addEventListener('mouseover', function() { = __this.initialMouseOver =3D true; }, false);=0A= // element.addEventListener('mouseout', function() { = __this.initialMouseOver =3D false; }, false);=0A= // }=0A= }=0A= }=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= /* ------------------------=0A= AC_RunActiveContent=0A= =0A= Modified to return the embed string, rather than use document.write - = modified functions prefixed with 'Mod_'=0A= Implied consent for use: = http://www.adobe.com/devnet/activecontent/articles/devletter.html=0A= =0A= -------------------------- */=0A= =0A= // v1.7=0A= // Flash Player Version Detection=0A= // Detect Client Browser type=0A= // Copyright 2005-2007 Adobe Systems Incorporated. All rights reserved.=0A= var isIE =3D (navigator.appVersion.indexOf("MSIE") !=3D -1) ? true : = false;=0A= var isWin =3D (navigator.appVersion.toLowerCase().indexOf("win") !=3D = -1) ? true : false;=0A= =0A= var isOpera =3D (navigator.userAgent.indexOf("Opera") !=3D -1) ? true : = false;=0A= =0A= function ControlVersion()=0A= {=0A= var version;=0A= var axo;=0A= var e;=0A= =0A= // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo = isn't in the registry=0A= =0A= try {=0A= // version will be set for 7.X or greater players=0A= axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");=0A= version =3D axo.GetVariable("$version");=0A= } catch (e) {=0A= }=0A= =0A= if (!version)=0A= {=0A= try {=0A= // version will be set for 6.X players only=0A= axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");=0A= =0A= // installed player is some revision of 6.0=0A= // GetVariable("$version") crashes for versions 6.0.22 through = 6.0.29,=0A= // so we have to be careful. =0A= =0A= // default to the first public version=0A= version =3D "WIN 6,0,21,0";=0A= =0A= // throws if AllowScripAccess does not exist (introduced in 6.0r47) =0A= axo.AllowScriptAccess =3D "always";=0A= =0A= // safe to call for 6.0r47 or greater=0A= version =3D axo.GetVariable("$version");=0A= =0A= } catch (e) {=0A= }=0A= }=0A= =0A= if (!version)=0A= {=0A= try {=0A= // version will be set for 4.X or 5.X player=0A= axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");=0A= version =3D axo.GetVariable("$version");=0A= } catch (e) {=0A= }=0A= }=0A= =0A= if (!version)=0A= {=0A= try {=0A= // version will be set for 3.X player=0A= axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");=0A= version =3D "WIN 3,0,18,0";=0A= } catch (e) {=0A= }=0A= }=0A= =0A= if (!version)=0A= {=0A= try {=0A= // version will be set for 2.X player=0A= axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash");=0A= version =3D "WIN 2,0,0,11";=0A= } catch (e) {=0A= version =3D -1;=0A= }=0A= }=0A= =0A= return version;=0A= }=0A= =0A= // JavaScript helper required to detect Flash Player PlugIn version = information=0A= function GetSwfVer(){=0A= // NS/Opera version >=3D 3 check for Flash plugin in plugin array=0A= var flashVer =3D -1;=0A= =0A= if (navigator.plugins !=3D null && navigator.plugins.length > 0) {=0A= if (navigator.plugins["Shockwave Flash 2.0"] || = navigator.plugins["Shockwave Flash"]) {=0A= var swVer2 =3D navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : = "";=0A= var flashDescription =3D navigator.plugins["Shockwave Flash" + = swVer2].description;=0A= var descArray =3D flashDescription.split(" ");=0A= var tempArrayMajor =3D descArray[2].split("."); =0A= var versionMajor =3D tempArrayMajor[0];=0A= var versionMinor =3D tempArrayMajor[1];=0A= var versionRevision =3D descArray[3];=0A= if (versionRevision =3D=3D "") {=0A= versionRevision =3D descArray[4];=0A= }=0A= if (versionRevision[0] =3D=3D "d") {=0A= versionRevision =3D versionRevision.substring(1);=0A= } else if (versionRevision[0] =3D=3D "r") {=0A= versionRevision =3D versionRevision.substring(1);=0A= if (versionRevision.indexOf("d") > 0) {=0A= versionRevision =3D versionRevision.substring(0, = versionRevision.indexOf("d"));=0A= }=0A= }=0A= var flashVer =3D versionMajor + "." + versionMinor + "." + = versionRevision;=0A= }=0A= }=0A= // MSN/WebTV 2.6 supports Flash 4=0A= else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !=3D = -1) flashVer =3D 4;=0A= // WebTV 2.5 supports Flash 3=0A= else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !=3D = -1) flashVer =3D 3;=0A= // older WebTV supports Flash 2=0A= else if (navigator.userAgent.toLowerCase().indexOf("webtv") !=3D -1) = flashVer =3D 2;=0A= else if ( isIE && isWin && !isOpera ) {=0A= flashVer =3D ControlVersion();=0A= } =0A= return flashVer;=0A= }=0A= =0A= // When called with reqMajorVer, reqMinorVer, reqRevision returns true = if that version or greater is available=0A= function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)=0A= {=0A= versionStr =3D GetSwfVer();=0A= if (versionStr =3D=3D -1 ) {=0A= return false;=0A= } else if (versionStr !=3D 0) {=0A= if(isIE && isWin && !isOpera) {=0A= // Given "WIN 2,0,0,11"=0A= tempArray =3D versionStr.split(" "); // ["WIN", "2,0,0,11"]=0A= tempString =3D tempArray[1]; // "2,0,0,11"=0A= versionArray =3D tempString.split(","); // ['2', '0', '0', '11']=0A= } else {=0A= versionArray =3D versionStr.split(".");=0A= }=0A= var versionMajor =3D versionArray[0];=0A= var versionMinor =3D versionArray[1];=0A= var versionRevision =3D versionArray[2];=0A= =0A= // is the major.revision >=3D requested major.revision AND the = minor version >=3D requested minor=0A= if (versionMajor > parseFloat(reqMajorVer)) {=0A= return true;=0A= } else if (versionMajor =3D=3D parseFloat(reqMajorVer)) {=0A= if (versionMinor > parseFloat(reqMinorVer))=0A= return true;=0A= else if (versionMinor =3D=3D parseFloat(reqMinorVer)) {=0A= if (versionRevision >=3D parseFloat(reqRevision))=0A= return true;=0A= }=0A= }=0A= return false;=0A= }=0A= }=0A= =0A= function AC_AddExtension(src, ext)=0A= {=0A= if (src.indexOf('?') !=3D -1)=0A= return src.replace(/\?/, ext+'?'); =0A= else=0A= return src + ext;=0A= }=0A= =0A= function Mod_AC_Generateobj(objAttrs, params, embedAttrs) =0A= { =0A= var str =3D '';=0A= if (isIE && isWin && !isOpera)=0A= {=0A= str +=3D '';=0A= for (var i in params)=0A= {=0A= str +=3D ' ';=0A= }=0A= str +=3D '';=0A= }=0A= else=0A= {=0A= str +=3D ' ';=0A= }=0A= =0A= return str;=0A= }=0A= =0A= function Mod_AC_FL_RunContent(){=0A= var ret =3D AC_GetArgs( arguments, ".swf", "movie", = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", = "application/x-shockwave-flash" );=0A= =0A= return Mod_AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);=0A= }=0A= =0A= function Mod_AC_SW_RunContent(){=0A= var ret =3D =0A= AC_GetArgs=0A= ( arguments, ".dcr", "src", = "clsid:166B1BCA-3F9C-11CF-8075-444553540000"=0A= , null=0A= );=0A= return Mod_AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);=0A= }=0A= =0A= function AC_GetArgs(args, ext, srcParamName, classid, mimeType){=0A= var ret =3D new Object();=0A= ret.embedAttrs =3D new Object();=0A= ret.params =3D new Object();=0A= ret.objAttrs =3D new Object();=0A= for (var i=3D0; i < args.length; i=3Di+2){=0A= var currArg =3D args[i].toLowerCase(); =0A= =0A= switch (currArg){ =0A= case "classid":=0A= break;=0A= case "pluginspage":=0A= ret.embedAttrs[args[i]] =3D args[i+1];=0A= break;=0A= case "src":=0A= case "movie": =0A= args[i+1] =3D AC_AddExtension(args[i+1], ext);=0A= ret.embedAttrs["src"] =3D args[i+1];=0A= ret.params[srcParamName] =3D args[i+1];=0A= break;=0A= case "onafterupdate":=0A= case "onbeforeupdate":=0A= case "onblur":=0A= case "oncellchange":=0A= case "onclick":=0A= case "ondblclick":=0A= case "ondrag":=0A= case "ondragend":=0A= case "ondragenter":=0A= case "ondragleave":=0A= case "ondragover":=0A= case "ondrop":=0A= case "onfinish":=0A= case "onfocus":=0A= case "onhelp":=0A= case "onmousedown":=0A= case "onmouseup":=0A= case "onmouseover":=0A= case "onmousemove":=0A= case "onmouseout":=0A= case "onkeypress":=0A= case "onkeydown":=0A= case "onkeyup":=0A= case "onload":=0A= case "onlosecapture":=0A= case "onpropertychange":=0A= case "onreadystatechange":=0A= case "onrowsdelete":=0A= case "onrowenter":=0A= case "onrowexit":=0A= case "onrowsinserted":=0A= case "onstart":=0A= case "onscroll":=0A= case "onbeforeeditfocus":=0A= case "onactivate":=0A= case "onbeforedeactivate":=0A= case "ondeactivate":=0A= case "type":=0A= case "codebase":=0A= case "id":=0A= ret.objAttrs[args[i]] =3D args[i+1];=0A= break;=0A= case "width":=0A= case "height":=0A= case "align":=0A= case "vspace": =0A= case "hspace":=0A= case "class":=0A= case "title":=0A= case "accesskey":=0A= case "name":=0A= case "tabindex":=0A= ret.embedAttrs[args[i]] =3D ret.objAttrs[args[i]] =3D args[i+1];=0A= break;=0A= default:=0A= ret.embedAttrs[args[i]] =3D ret.params[args[i]] =3D args[i+1];=0A= }=0A= }=0A= ret.objAttrs["classid"] =3D classid;=0A= if (mimeType) ret.embedAttrs["type"] =3D mimeType;=0A= return ret;=0A= }=0A= =0A= // call callback function if defined =0A= // this is used so we make sure view.js is loaded before calling =0A= // other code that depends on it=0A= if(typeof scribd_view_callback !=3D "undefined") {=0A= scribd_view_callback();=0A= }=0A= }=0A= =0A= /* ------------------------=0A= (c) Scribd 2008=0A= ------------------------- */=0A= ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.seletlumieretv.org/blogue/wp-content/plugins/zd-scribd-ipaper/assets/lightview2.5/js/prototype.js /* Prototype JavaScript framework, version 1.6.1_rc2=0A= * (c) 2005-2009 Sam Stephenson=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://www.prototypejs.org/=0A= *=0A= = *------------------------------------------------------------------------= --*/=0A= =0A= var Prototype =3D {=0A= Version: '1.6.1_rc2',=0A= =0A= Browser: {=0A= IE: !!(window.attachEvent &&=0A= navigator.userAgent.indexOf('Opera') =3D=3D=3D -1),=0A= Opera: navigator.userAgent.indexOf('Opera') > -1,=0A= WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A= Gecko: navigator.userAgent.indexOf('Gecko') > -1 &&=0A= navigator.userAgent.indexOf('KHTML') =3D=3D=3D -1,=0A= MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A= },=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=0A= SelectorsAPI: !!document.querySelector,=0A= ElementExtensions: (function() {=0A= if (window.HTMLElement && window.HTMLElement.prototype)=0A= return true;=0A= if (window.Element && window.Element.prototype)=0A= return true;=0A= })(),=0A= SpecificElementExtensions: (function() {=0A= if (typeof window.HTMLDivElement !=3D=3D 'undefined')=0A= return true;=0A= =0A= var div =3D document.createElement('div');=0A= if (div['__proto__'] && div['__proto__'] !=3D=3D=0A= document.createElement('form')['__proto__']) {=0A= return true;=0A= }=0A= =0A= return false;=0A= })()=0A= },=0A= =0A= ScriptFragment: ']*>([\\S\\s]*?)<\/script>',=0A= JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A= =0A= emptyFunction: function() { },=0A= K: function(x) { return x }=0A= };=0A= =0A= if (Prototype.Browser.MobileSafari)=0A= Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A= =0A= =0A= var Abstract =3D { };=0A= =0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var lambda =3D arguments[i];=0A= try {=0A= returnValue =3D lambda();=0A= break;=0A= } catch (e) { }=0A= }=0A= =0A= return returnValue;=0A= }=0A= };=0A= =0A= /* Based on Alex Arnell's inheritance implementation. */=0A= =0A= var Class =3D (function() {=0A= function create() {=0A= var parent =3D null, properties =3D $A(arguments);=0A= if (Object.isFunction(properties[0]))=0A= parent =3D properties.shift();=0A= =0A= function klass() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= =0A= Object.extend(klass, Class.Methods);=0A= klass.superclass =3D parent;=0A= klass.subclasses =3D [];=0A= =0A= if (parent) {=0A= var subclass =3D function() {};=0A= subclass.prototype =3D parent.prototype;=0A= klass.prototype =3D new subclass;=0A= parent.subclasses.push(klass);=0A= }=0A= =0A= for (var i =3D 0; i < properties.length; i++)=0A= klass.addMethods(properties[i]);=0A= =0A= if (!klass.prototype.initialize)=0A= klass.prototype.initialize =3D Prototype.emptyFunction;=0A= =0A= klass.prototype.constructor =3D klass;=0A= return klass;=0A= }=0A= =0A= function addMethods(source) {=0A= var ancestor =3D this.superclass && this.superclass.prototype;=0A= var properties =3D Object.keys(source);=0A= =0A= if (!Object.keys({ toString: true }).length) {=0A= if (source.toString !=3D Object.prototype.toString)=0A= properties.push("toString");=0A= if (source.valueOf !=3D Object.prototype.valueOf)=0A= properties.push("valueOf");=0A= }=0A= =0A= for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A= var property =3D properties[i], value =3D source[property];=0A= if (ancestor && Object.isFunction(value) &&=0A= value.argumentNames().first() =3D=3D "$super") {=0A= var method =3D value;=0A= value =3D (function(m) {=0A= return function() { return ancestor[m].apply(this, arguments); = };=0A= })(property).wrap(method);=0A= =0A= value.valueOf =3D method.valueOf.bind(method);=0A= value.toString =3D method.toString.bind(method);=0A= }=0A= this.prototype[property] =3D value;=0A= }=0A= =0A= return this;=0A= }=0A= =0A= return {=0A= create: create,=0A= Methods: {=0A= addMethods: addMethods=0A= }=0A= };=0A= })();=0A= (function() {=0A= =0A= function getClass(object) {=0A= return Object.prototype.toString.call(object)=0A= .match(/^\[object\s(.*)\]$/)[1];=0A= }=0A= =0A= function extend(destination, source) {=0A= for (var property in source)=0A= destination[property] =3D source[property];=0A= return destination;=0A= }=0A= =0A= function inspect(object) {=0A= try {=0A= if (isUndefined(object)) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : String(object);=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= }=0A= =0A= function toJSON(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =0A= if (object =3D=3D=3D null) return 'null';=0A= if (object.toJSON) return object.toJSON();=0A= if (isElement(object)) return;=0A= =0A= var results =3D [];=0A= for (var property in object) {=0A= var value =3D toJSON(object[property]);=0A= if (!isUndefined(value))=0A= results.push(property.toJSON() + ': ' + value);=0A= }=0A= =0A= return '{' + results.join(', ') + '}';=0A= }=0A= =0A= function toQueryString(object) {=0A= return $H(object).toQueryString();=0A= }=0A= =0A= function toHTML(object) {=0A= return object && object.toHTML ? object.toHTML() : = String.interpret(object);=0A= }=0A= =0A= function keys(object) {=0A= var results =3D [];=0A= for (var property in object)=0A= results.push(property);=0A= return results;=0A= }=0A= =0A= function values(object) {=0A= var results =3D [];=0A= for (var property in object)=0A= results.push(object[property]);=0A= return results;=0A= }=0A= =0A= function clone(object) {=0A= return extend({ }, object);=0A= }=0A= =0A= function isElement(object) {=0A= return !!(object && object.nodeType =3D=3D 1);=0A= }=0A= =0A= function isArray(object) {=0A= return getClass(object) =3D=3D=3D "Array";=0A= }=0A= =0A= =0A= function isHash(object) {=0A= return object instanceof Hash;=0A= }=0A= =0A= function isFunction(object) {=0A= return typeof object =3D=3D=3D "function";=0A= }=0A= =0A= function isString(object) {=0A= return getClass(object) =3D=3D=3D "String";=0A= }=0A= =0A= function isNumber(object) {=0A= return getClass(object) =3D=3D=3D "Number";=0A= }=0A= =0A= function isUndefined(object) {=0A= return typeof object =3D=3D=3D "undefined";=0A= }=0A= =0A= extend(Object, {=0A= extend: extend,=0A= inspect: inspect,=0A= toJSON: toJSON,=0A= toQueryString: toQueryString,=0A= toHTML: toHTML,=0A= keys: keys,=0A= values: values,=0A= clone: clone,=0A= isElement: isElement,=0A= isArray: isArray,=0A= isHash: isHash,=0A= isFunction: isFunction,=0A= isString: isString,=0A= isNumber: isNumber,=0A= isUndefined: isUndefined=0A= });=0A= })();=0A= Object.extend(Function.prototype, (function() {=0A= var slice =3D Array.prototype.slice;=0A= =0A= function update(array, args) {=0A= var arrayLength =3D array.length, length =3D args.length;=0A= while (length--) array[arrayLength + length] =3D args[length];=0A= return array;=0A= }=0A= =0A= function merge(array, args) {=0A= array =3D slice.call(array, 0);=0A= return update(array, args);=0A= }=0A= =0A= function argumentNames() {=0A= var names =3D = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]=0A= .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')=0A= .replace(/\s+/g, '').split(',');=0A= return names.length =3D=3D 1 && !names[0] ? [] : names;=0A= }=0A= =0A= function bind(context) {=0A= if (arguments.length < 2 && Object.isUndefined(arguments[0])) return = this;=0A= var __method =3D this, args =3D slice.call(arguments, 1);=0A= return function() {=0A= var a =3D merge(args, arguments);=0A= return __method.apply(context, a);=0A= }=0A= }=0A= =0A= function bindAsEventListener(context) {=0A= var __method =3D this, args =3D slice.call(arguments, 1);=0A= return function(event) {=0A= var a =3D update([event || window.event], args);=0A= return __method.apply(context, a);=0A= }=0A= }=0A= =0A= function curry() {=0A= if (!arguments.length) return this;=0A= var __method =3D this, args =3D slice.call(arguments, 0);=0A= return function() {=0A= var a =3D merge(args, arguments);=0A= return __method.apply(this, a);=0A= }=0A= }=0A= =0A= function delay(timeout) {=0A= var __method =3D this, args =3D slice.call(arguments, 1);=0A= timeout =3D timeout * 1000=0A= return window.setTimeout(function() {=0A= return __method.apply(__method, args);=0A= }, timeout);=0A= }=0A= =0A= function defer() {=0A= var args =3D update([0.01], arguments);=0A= return this.delay.apply(this, args);=0A= }=0A= =0A= function wrap(wrapper) {=0A= var __method =3D this;=0A= return function() {=0A= var a =3D update([__method.bind(this)], arguments);=0A= return wrapper.apply(this, a);=0A= }=0A= }=0A= =0A= function methodize() {=0A= if (this._methodized) return this._methodized;=0A= var __method =3D this;=0A= return this._methodized =3D function() {=0A= var a =3D update([this], arguments);=0A= return __method.apply(null, a);=0A= };=0A= }=0A= =0A= return {=0A= argumentNames: argumentNames,=0A= bind: bind,=0A= bindAsEventListener: bindAsEventListener,=0A= curry: curry,=0A= delay: delay,=0A= defer: defer,=0A= wrap: wrap,=0A= methodize: methodize=0A= }=0A= })());=0A= =0A= =0A= Date.prototype.toJSON =3D function() {=0A= return '"' + this.getUTCFullYear() + '-' +=0A= (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A= this.getUTCDate().toPaddedString(2) + 'T' +=0A= this.getUTCHours().toPaddedString(2) + ':' +=0A= this.getUTCMinutes().toPaddedString(2) + ':' +=0A= this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A= };=0A= =0A= =0A= RegExp.prototype.match =3D RegExp.prototype.test;=0A= =0A= RegExp.escape =3D function(str) {=0A= return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A= };=0A= var PeriodicalExecuter =3D Class.create({=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= execute: function() {=0A= this.callback(this);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.execute();=0A= } catch(e) {=0A= /* empty catch for clients that don't support try/finally */=0A= }=0A= finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= });=0A= Object.extend(String, {=0A= interpret: function(value) {=0A= return value =3D=3D null ? '' : String(value);=0A= },=0A= specialChar: {=0A= '\b': '\\b',=0A= '\t': '\\t',=0A= '\n': '\\n',=0A= '\f': '\\f',=0A= '\r': '\\r',=0A= '\\': '\\\\'=0A= }=0A= });=0A= =0A= Object.extend(String.prototype, (function() {=0A= =0A= function prepareReplacement(replacement) {=0A= if (Object.isFunction(replacement)) return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= }=0A= =0A= function gsub(pattern, replacement) {=0A= var result =3D '', source =3D this, match;=0A= replacement =3D prepareReplacement(replacement);=0A= =0A= if (Object.isString(pattern))=0A= pattern =3D RegExp.escape(pattern);=0A= =0A= if (!(pattern.length || pattern.source)) {=0A= replacement =3D replacement('');=0A= return replacement + source.split('').join(replacement) + = replacement;=0A= }=0A= =0A= while (source.length > 0) {=0A= if (match =3D source.match(pattern)) {=0A= result +=3D source.slice(0, match.index);=0A= result +=3D String.interpret(replacement(match));=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= }=0A= =0A= function sub(pattern, replacement, count) {=0A= replacement =3D prepareReplacement(replacement);=0A= count =3D Object.isUndefined(count) ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= }=0A= =0A= function scan(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return String(this);=0A= }=0A= =0A= function truncate(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : = String(this);=0A= }=0A= =0A= function strip() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= }=0A= =0A= function stripTags() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= }=0A= =0A= function stripScripts() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= }=0A= =0A= function extractScripts() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= }=0A= =0A= function evalScripts() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= }=0A= =0A= function escapeHTML() {=0A= escapeHTML.text.data =3D this;=0A= return escapeHTML.div.innerHTML;=0A= }=0A= =0A= function unescapeHTML() {=0A= var div =3D document.createElement('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A= $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) :=0A= div.childNodes[0].nodeValue) : '';=0A= }=0A= =0A= function toQueryParams(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return { };=0A= =0A= return match[1].split(separator || '&').inject({ }, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var key =3D decodeURIComponent(pair.shift());=0A= var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A= if (value !=3D undefined) value =3D decodeURIComponent(value);=0A= =0A= if (key in hash) {=0A= if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A= hash[key].push(value);=0A= }=0A= else hash[key] =3D value;=0A= }=0A= return hash;=0A= });=0A= }=0A= =0A= function toArray() {=0A= return this.split('');=0A= }=0A= =0A= function succ() {=0A= return this.slice(0, this.length - 1) +=0A= String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A= }=0A= =0A= function times(count) {=0A= return count < 1 ? '' : new Array(count + 1).join(this);=0A= }=0A= =0A= function camelize() {=0A= var parts =3D this.split('-'), len =3D parts.length;=0A= if (len =3D=3D 1) return parts[0];=0A= =0A= var camelized =3D this.charAt(0) =3D=3D '-'=0A= ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A= : parts[0];=0A= =0A= for (var i =3D 1; i < len; i++)=0A= camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1);=0A= =0A= return camelized;=0A= }=0A= =0A= function capitalize() {=0A= return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase();=0A= }=0A= =0A= function underscore() {=0A= return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase();=0A= }=0A= =0A= function dasherize() {=0A= return this.gsub(/_/,'-');=0A= }=0A= =0A= function inspect(useDoubleQuotes) {=0A= var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A= var character =3D String.specialChar[match[0]];=0A= return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16);=0A= });=0A= if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"';=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= }=0A= =0A= function toJSON() {=0A= return this.inspect(true);=0A= }=0A= =0A= function unfilterJSON(filter) {=0A= return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A= }=0A= =0A= function isJSON() {=0A= var str =3D this;=0A= if (str.blank()) return false;=0A= str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A= return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A= }=0A= =0A= function evalJSON(sanitize) {=0A= var json =3D this.unfilterJSON();=0A= try {=0A= if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A= } catch (e) { }=0A= throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A= }=0A= =0A= function include(pattern) {=0A= return this.indexOf(pattern) > -1;=0A= }=0A= =0A= function startsWith(pattern) {=0A= return this.indexOf(pattern) =3D=3D=3D 0;=0A= }=0A= =0A= function endsWith(pattern) {=0A= var d =3D this.length - pattern.length;=0A= return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A= }=0A= =0A= function empty() {=0A= return this =3D=3D '';=0A= }=0A= =0A= function blank() {=0A= return /^\s*$/.test(this);=0A= }=0A= =0A= function interpolate(object, pattern) {=0A= return new Template(this, pattern).evaluate(object);=0A= }=0A= =0A= return {=0A= gsub: gsub,=0A= sub: sub,=0A= scan: scan,=0A= truncate: truncate,=0A= strip: strip,=0A= stripTags: stripTags,=0A= stripScripts: stripScripts,=0A= extractScripts: extractScripts,=0A= evalScripts: evalScripts,=0A= escapeHTML: escapeHTML,=0A= unescapeHTML: unescapeHTML,=0A= toQueryParams: toQueryParams,=0A= parseQuery: toQueryParams,=0A= toArray: toArray,=0A= succ: succ,=0A= times: times,=0A= camelize: camelize,=0A= capitalize: capitalize,=0A= underscore: underscore,=0A= dasherize: dasherize,=0A= inspect: inspect,=0A= toJSON: toJSON,=0A= unfilterJSON: unfilterJSON,=0A= isJSON: isJSON,=0A= evalJSON: evalJSON,=0A= include: include,=0A= startsWith: startsWith,=0A= endsWith: endsWith,=0A= empty: empty,=0A= blank: blank,=0A= interpolate: interpolate=0A= };=0A= })());=0A= =0A= Object.extend(String.prototype.escapeHTML, {=0A= div: document.createElement('div'),=0A= text: document.createTextNode('')=0A= });=0A= =0A= String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.t= ext);=0A= =0A= if ('<\n>'.escapeHTML() !=3D=3D '<\n>') {=0A= String.prototype.escapeHTML =3D function() {=0A= return = this.replace(/&/g,'&').replace(//g,'>');=0A= }=0A= }=0A= =0A= if ('<\n>'.unescapeHTML() !=3D=3D '<\n>') {=0A= String.prototype.unescapeHTML =3D function() {=0A= return = this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&= /g,'&');=0A= }=0A= }=0A= var Template =3D Class.create({=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= if (Object.isFunction(object.toTemplateReplacements))=0A= object =3D object.toTemplateReplacements();=0A= =0A= return this.template.gsub(this.pattern, function(match) {=0A= if (object =3D=3D null) return '';=0A= =0A= var before =3D match[1] || '';=0A= if (before =3D=3D '\\') return match[2];=0A= =0A= var ctx =3D object, expr =3D match[3];=0A= var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A= match =3D pattern.exec(expr);=0A= if (match =3D=3D null) return before;=0A= =0A= while (match !=3D null) {=0A= var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', = ']') : match[1];=0A= ctx =3D ctx[comp];=0A= if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A= expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length);=0A= match =3D pattern.exec(expr);=0A= }=0A= =0A= return before + String.interpret(ctx);=0A= });=0A= }=0A= });=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= =0A= var $break =3D { };=0A= =0A= var Enumerable =3D (function() {=0A= function each(iterator, context) {=0A= var index =3D 0;=0A= try {=0A= this._each(function(value) {=0A= iterator.call(context, value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= }=0A= =0A= function eachSlice(number, iterator, context) {=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= if (number < 1) return array;=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= }=0A= =0A= function all(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator.call(context, value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= }=0A= =0A= function any(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator.call(context, value, index))=0A= throw $break;=0A= });=0A= return result;=0A= }=0A= =0A= function collect(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator.call(context, value, index));=0A= });=0A= return results;=0A= }=0A= =0A= function detect(iterator, context) {=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator.call(context, value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= }=0A= =0A= function findAll(iterator, context) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator.call(context, value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= }=0A= =0A= function grep(filter, iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var results =3D [];=0A= =0A= if (Object.isString(filter))=0A= filter =3D new RegExp(RegExp.escape(filter));=0A= =0A= this.each(function(value, index) {=0A= if (filter.match(value))=0A= results.push(iterator.call(context, value, index));=0A= });=0A= return results;=0A= }=0A= =0A= function include(object) {=0A= if (Object.isFunction(this.indexOf))=0A= if (this.indexOf(object) !=3D -1) return true;=0A= =0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= }=0A= =0A= function inGroupsOf(number, fillWith) {=0A= fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A= return this.eachSlice(number, function(slice) {=0A= while(slice.length < number) slice.push(fillWith);=0A= return slice;=0A= });=0A= }=0A= =0A= function inject(memo, iterator, context) {=0A= this.each(function(value, index) {=0A= memo =3D iterator.call(context, memo, value, index);=0A= });=0A= return memo;=0A= }=0A= =0A= function invoke(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.map(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= }=0A= =0A= function max(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator.call(context, value, index);=0A= if (result =3D=3D null || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= }=0A= =0A= function min(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator.call(context, value, index);=0A= if (result =3D=3D null || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= }=0A= =0A= function partition(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator.call(context, value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= }=0A= =0A= function pluck(property) {=0A= var results =3D [];=0A= this.each(function(value) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= }=0A= =0A= function reject(iterator, context) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator.call(context, value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= }=0A= =0A= function sortBy(iterator, context) {=0A= return this.map(function(value, index) {=0A= return {=0A= value: value,=0A= criteria: iterator.call(context, value, index)=0A= };=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= }=0A= =0A= function toArray() {=0A= return this.map();=0A= }=0A= =0A= function zip() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (Object.isFunction(args.last()))=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= }=0A= =0A= function size() {=0A= return this.toArray().length;=0A= }=0A= =0A= function inspect() {=0A= return '#';=0A= }=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= return {=0A= each: each,=0A= eachSlice: eachSlice,=0A= all: all,=0A= every: all,=0A= any: any,=0A= some: any,=0A= collect: collect,=0A= map: collect,=0A= detect: detect,=0A= findAll: findAll,=0A= select: findAll,=0A= filter: findAll,=0A= grep: grep,=0A= include: include,=0A= member: include,=0A= inGroupsOf: inGroupsOf,=0A= inject: inject,=0A= invoke: invoke,=0A= max: max,=0A= min: min,=0A= partition: partition,=0A= pluck: pluck,=0A= reject: reject,=0A= sortBy: sortBy,=0A= toArray: toArray,=0A= entries: toArray,=0A= zip: zip,=0A= size: size,=0A= inspect: inspect,=0A= find: detect=0A= };=0A= })();=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if ('toArray' in iterable) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= function $w(string) {=0A= if (!Object.isString(string)) return [];=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= Array.from =3D $A;=0A= =0A= =0A= (function() {=0A= var arrayProto =3D Array.prototype,=0A= slice =3D arrayProto.slice,=0A= _each =3D arrayProto.forEach; // use native browser JS 1.6 = implementation if available=0A= =0A= function each(iterator) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= iterator(this[i]);=0A= }=0A= if (!_each) _each =3D each;=0A= =0A= function clear() {=0A= this.length =3D 0;=0A= return this;=0A= }=0A= =0A= function first() {=0A= return this[0];=0A= }=0A= =0A= function last() {=0A= return this[this.length - 1];=0A= }=0A= =0A= function compact() {=0A= return this.select(function(value) {=0A= return value !=3D null;=0A= });=0A= }=0A= =0A= function flatten() {=0A= return this.inject([], function(array, value) {=0A= if (Object.isArray(value))=0A= return array.concat(value.flatten());=0A= array.push(value);=0A= return array;=0A= });=0A= }=0A= =0A= function without() {=0A= var values =3D slice.call(arguments, 0);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= }=0A= =0A= function reverse(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= }=0A= =0A= function uniq(sorted) {=0A= return this.inject([], function(array, value, index) {=0A= if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value)))=0A= array.push(value);=0A= return array;=0A= });=0A= }=0A= =0A= function intersect(array) {=0A= return this.uniq().findAll(function(item) {=0A= return array.detect(function(value) { return item =3D=3D=3D value = });=0A= });=0A= }=0A= =0A= =0A= function clone() {=0A= return slice.call(this, 0);=0A= }=0A= =0A= function size() {=0A= return this.length;=0A= }=0A= =0A= function inspect() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= }=0A= =0A= function toJSON() {=0A= var results =3D [];=0A= this.each(function(object) {=0A= var value =3D Object.toJSON(object);=0A= if (!Object.isUndefined(value)) results.push(value);=0A= });=0A= return '[' + results.join(', ') + ']';=0A= }=0A= =0A= function indexOf(item, i) {=0A= i || (i =3D 0);=0A= var length =3D this.length;=0A= if (i < 0) i =3D length + i;=0A= for (; i < length; i++)=0A= if (this[i] =3D=3D=3D item) return i;=0A= return -1;=0A= }=0A= =0A= function lastIndexOf(item, i) {=0A= i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A= var n =3D this.slice(0, i).reverse().indexOf(item);=0A= return (n < 0) ? n : i - n - 1;=0A= }=0A= =0A= function concat() {=0A= var array =3D slice.call(this, 0), item;=0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= item =3D arguments[i];=0A= if (Object.isArray(item) && !('callee' in item)) {=0A= for (var j =3D 0, arrayLength =3D item.length; j < arrayLength; = j++)=0A= array.push(item[j]);=0A= } else {=0A= array.push(item);=0A= }=0A= }=0A= return array;=0A= }=0A= =0A= Object.extend(arrayProto, Enumerable);=0A= =0A= if (!arrayProto._reverse)=0A= arrayProto._reverse =3D arrayProto.reverse;=0A= =0A= Object.extend(arrayProto, {=0A= _each: _each,=0A= clear: clear,=0A= first: first,=0A= last: last,=0A= compact: compact,=0A= flatten: flatten,=0A= without: without,=0A= reverse: reverse,=0A= uniq: uniq,=0A= intersect: intersect,=0A= clone: clone,=0A= toArray: clone,=0A= size: size,=0A= inspect: inspect,=0A= toJSON: toJSON=0A= });=0A= =0A= var CONCAT_ARGUMENTS_BUGGY =3D (function() {=0A= return [].concat(arguments)[0][0] !=3D=3D 1;=0A= })(1,2)=0A= =0A= if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat =3D concat;=0A= =0A= if (!arrayProto.indexOf) arrayProto.indexOf =3D indexOf;=0A= if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf =3D lastIndexOf;=0A= })();=0A= function $H(object) {=0A= return new Hash(object);=0A= };=0A= =0A= var Hash =3D Class.create(Enumerable, (function() {=0A= function initialize(object) {=0A= this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object);=0A= }=0A= =0A= function _each(iterator) {=0A= for (var key in this._object) {=0A= var value =3D this._object[key], pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= }=0A= =0A= function set(key, value) {=0A= return this._object[key] =3D value;=0A= }=0A= =0A= function get(key) {=0A= if (this._object[key] !=3D=3D Object.prototype[key])=0A= return this._object[key];=0A= }=0A= =0A= function unset(key) {=0A= var value =3D this._object[key];=0A= delete this._object[key];=0A= return value;=0A= }=0A= =0A= function toObject() {=0A= return Object.clone(this._object);=0A= }=0A= =0A= function keys() {=0A= return this.pluck('key');=0A= }=0A= =0A= function values() {=0A= return this.pluck('value');=0A= }=0A= =0A= function index(value) {=0A= var match =3D this.detect(function(pair) {=0A= return pair.value =3D=3D=3D value;=0A= });=0A= return match && match.key;=0A= }=0A= =0A= function merge(object) {=0A= return this.clone().update(object);=0A= }=0A= =0A= function update(object) {=0A= return new Hash(object).inject(this, function(result, pair) {=0A= result.set(pair.key, pair.value);=0A= return result;=0A= });=0A= }=0A= =0A= function toQueryPair(key, value) {=0A= if (Object.isUndefined(value)) return key;=0A= return key + '=3D' + encodeURIComponent(String.interpret(value));=0A= }=0A= =0A= function toQueryString() {=0A= return this.inject([], function(results, pair) {=0A= var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A= =0A= if (values && typeof values =3D=3D 'object') {=0A= if (Object.isArray(values))=0A= return results.concat(values.map(toQueryPair.curry(key)));=0A= } else results.push(toQueryPair(key, values));=0A= return results;=0A= }).join('&');=0A= }=0A= =0A= function inspect() {=0A= return '#';=0A= }=0A= =0A= function toJSON() {=0A= return Object.toJSON(this.toObject());=0A= }=0A= =0A= function clone() {=0A= return new Hash(this);=0A= }=0A= =0A= return {=0A= initialize: initialize,=0A= _each: _each,=0A= set: set,=0A= get: get,=0A= unset: unset,=0A= toObject: toObject,=0A= toTemplateReplacements: toObject,=0A= keys: keys,=0A= values: values,=0A= index: index,=0A= merge: merge,=0A= update: update,=0A= toQueryString: toQueryString,=0A= inspect: inspect,=0A= toJSON: toJSON,=0A= clone: clone=0A= };=0A= })());=0A= =0A= Hash.from =3D $H;=0A= Object.extend(Number.prototype, (function() {=0A= function toColorPart() {=0A= return this.toPaddedString(2, 16);=0A= }=0A= =0A= function succ() {=0A= return this + 1;=0A= }=0A= =0A= function times(iterator, context) {=0A= $R(0, this, true).each(iterator, context);=0A= return this;=0A= }=0A= =0A= function toPaddedString(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= }=0A= =0A= function toJSON() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= =0A= function abs() {=0A= return Math.abs(this);=0A= }=0A= =0A= function round() {=0A= return Math.round(this);=0A= }=0A= =0A= function ceil() {=0A= return Math.ceil(this);=0A= }=0A= =0A= function floor() {=0A= return Math.floor(this);=0A= }=0A= =0A= return {=0A= toColorPart: toColorPart,=0A= succ: succ,=0A= times: times,=0A= toPaddedString: toPaddedString,=0A= toJSON: toJSON,=0A= abs: abs,=0A= round: round,=0A= ceil: ceil,=0A= floor: floor=0A= };=0A= })());=0A= =0A= function $R(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= }=0A= =0A= var ObjectRange =3D Class.create(Enumerable, (function() {=0A= function initialize(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= }=0A= =0A= function _each(iterator) {=0A= var value =3D this.start;=0A= while (this.include(value)) {=0A= iterator(value);=0A= value =3D value.succ();=0A= }=0A= }=0A= =0A= function include(value) {=0A= if (value < this.start)=0A= return false;=0A= if (this.exclusive)=0A= return value < this.end;=0A= return value <=3D this.end;=0A= }=0A= =0A= return {=0A= initialize: initialize,=0A= _each: _each,=0A= include: include=0A= };=0A= })());=0A= =0A= =0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new XMLHttpRequest()},=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A= ) || false;=0A= },=0A= =0A= activeRequestCount: 0=0A= };=0A= =0A= Ajax.Responders =3D {=0A= responders: [],=0A= =0A= _each: function(iterator) {=0A= this.responders._each(iterator);=0A= },=0A= =0A= register: function(responder) {=0A= if (!this.include(responder))=0A= this.responders.push(responder);=0A= },=0A= =0A= unregister: function(responder) {=0A= this.responders =3D this.responders.without(responder);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (Object.isFunction(responder[callback])) {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) { }=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() { Ajax.activeRequestCount++ },=0A= onComplete: function() { Ajax.activeRequestCount-- }=0A= });=0A= Ajax.Base =3D Class.create({=0A= initialize: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: '',=0A= evalJSON: true,=0A= evalJS: true=0A= };=0A= Object.extend(this.options, options || { });=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= =0A= if (Object.isString(this.options.parameters))=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= else if (Object.isHash(this.options.parameters))=0A= this.options.parameters =3D this.options.parameters.toObject();=0A= }=0A= });=0A= Ajax.Request =3D Class.create(Ajax.Base, {=0A= _complete: false,=0A= =0A= initialize: function($super, url, options) {=0A= $super(options);=0A= this.transport =3D Ajax.getTransport();=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= this.url =3D url;=0A= this.method =3D this.options.method;=0A= var params =3D Object.clone(this.options.parameters);=0A= =0A= if (!['get', 'post'].include(this.method)) {=0A= params['_method'] =3D this.method;=0A= this.method =3D 'post';=0A= }=0A= =0A= this.parameters =3D params;=0A= =0A= if (params =3D Object.toQueryString(params)) {=0A= if (this.method =3D=3D 'get')=0A= this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A= else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= params +=3D '&_=3D';=0A= }=0A= =0A= try {=0A= var response =3D new Ajax.Response(this);=0A= if (this.options.onCreate) this.options.onCreate(response);=0A= Ajax.Responders.dispatch('onCreate', this, response);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null;=0A= this.transport.send(this.body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (Object.isFunction(extras.push))=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= var status =3D this.getStatus();=0A= return !status || (status >=3D 200 && status < 300);=0A= },=0A= =0A= getStatus: function() {=0A= try {=0A= return this.transport.status || 0;=0A= } catch (e) { return 0 }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this);=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + response.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(response, response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= var contentType =3D response.getHeader('Content-type');=0A= if (this.options.evalJS =3D=3D 'force'=0A= || (this.options.evalJS && this.isSameOrigin() && contentType=0A= && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i)))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON);=0A= Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= isSameOrigin: function() {=0A= var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A= return !m || (m[0] =3D=3D = '#{protocol}//#{domain}#{port}'.interpolate({=0A= protocol: location.protocol,=0A= domain: document.domain,=0A= port: location.port ? ':' + location.port : ''=0A= }));=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name) || null;=0A= } catch (e) { return null; }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval((this.transport.responseText || '').unfilterJSON());=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= Ajax.Response =3D Class.create({=0A= initialize: function(request){=0A= this.request =3D request;=0A= var transport =3D this.transport =3D request.transport,=0A= readyState =3D this.readyState =3D transport.readyState;=0A= =0A= if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = {=0A= this.status =3D this.getStatus();=0A= this.statusText =3D this.getStatusText();=0A= this.responseText =3D String.interpret(transport.responseText);=0A= this.headerJSON =3D this._getHeaderJSON();=0A= }=0A= =0A= if(readyState =3D=3D 4) {=0A= var xml =3D transport.responseXML;=0A= this.responseXML =3D Object.isUndefined(xml) ? null : xml;=0A= this.responseJSON =3D this._getResponseJSON();=0A= }=0A= },=0A= =0A= status: 0,=0A= =0A= statusText: '',=0A= =0A= getStatus: Ajax.Request.prototype.getStatus,=0A= =0A= getStatusText: function() {=0A= try {=0A= return this.transport.statusText || '';=0A= } catch (e) { return '' }=0A= },=0A= =0A= getHeader: Ajax.Request.prototype.getHeader,=0A= =0A= getAllHeaders: function() {=0A= try {=0A= return this.getAllResponseHeaders();=0A= } catch (e) { return null }=0A= },=0A= =0A= getResponseHeader: function(name) {=0A= return this.transport.getResponseHeader(name);=0A= },=0A= =0A= getAllResponseHeaders: function() {=0A= return this.transport.getAllResponseHeaders();=0A= },=0A= =0A= _getHeaderJSON: function() {=0A= var json =3D this.getHeader('X-JSON');=0A= if (!json) return null;=0A= json =3D decodeURIComponent(escape(json));=0A= try {=0A= return json.evalJSON(this.request.options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= },=0A= =0A= _getResponseJSON: function() {=0A= var options =3D this.request.options;=0A= if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A= !(this.getHeader('Content-type') || = '').include('application/json')) ||=0A= this.responseText.blank())=0A= return null;=0A= try {=0A= return this.responseText.evalJSON(options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create(Ajax.Request, {=0A= initialize: function($super, container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= };=0A= =0A= options =3D Object.clone(options);=0A= var onComplete =3D options.onComplete;=0A= options.onComplete =3D (function(response, json) {=0A= this.updateContent(response.responseText);=0A= if (Object.isFunction(onComplete)) onComplete(response, json);=0A= }).bind(this);=0A= =0A= $super(url, options);=0A= },=0A= =0A= updateContent: function(responseText) {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'],=0A= options =3D this.options;=0A= =0A= if (!options.evalScripts) responseText =3D = responseText.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (options.insertion) {=0A= if (Object.isString(options.insertion)) {=0A= var insertion =3D { }; insertion[options.insertion] =3D = responseText;=0A= receiver.insert(insertion);=0A= }=0A= else options.insertion(receiver, responseText);=0A= }=0A= else receiver.update(responseText);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A= initialize: function($super, container, url, options) {=0A= $super(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D { };=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(response) {=0A= if (this.options.decay) {=0A= this.decay =3D (response.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D response.responseText;=0A= }=0A= this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= =0A= =0A= =0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (Object.isString(element))=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(Element.extend(query.snapshotItem(i)));=0A= return results;=0A= };=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Node) var Node =3D { };=0A= =0A= if (!Node.ELEMENT_NODE) {=0A= Object.extend(Node, {=0A= ELEMENT_NODE: 1,=0A= ATTRIBUTE_NODE: 2,=0A= TEXT_NODE: 3,=0A= CDATA_SECTION_NODE: 4,=0A= ENTITY_REFERENCE_NODE: 5,=0A= ENTITY_NODE: 6,=0A= PROCESSING_INSTRUCTION_NODE: 7,=0A= COMMENT_NODE: 8,=0A= DOCUMENT_NODE: 9,=0A= DOCUMENT_TYPE_NODE: 10,=0A= DOCUMENT_FRAGMENT_NODE: 11,=0A= NOTATION_NODE: 12=0A= });=0A= }=0A= =0A= =0A= (function(global) {=0A= =0A= var SETATTRIBUTE_IGNORES_NAME =3D (function(){=0A= var elForm =3D document.createElement("form");=0A= var elInput =3D document.createElement("input");=0A= var root =3D document.documentElement;=0A= elInput.setAttribute("name", "test");=0A= elForm.appendChild(elInput);=0A= root.appendChild(elForm);=0A= var isBuggy =3D elForm.elements=0A= ? (typeof elForm.elements.test =3D=3D "undefined")=0A= : null;=0A= root.removeChild(elForm);=0A= elForm =3D elInput =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= var element =3D global.Element;=0A= global.Element =3D function(tagName, attributes) {=0A= attributes =3D attributes || { };=0A= tagName =3D tagName.toLowerCase();=0A= var cache =3D Element.cache;=0A= if (SETATTRIBUTE_IGNORES_NAME && attributes.name) {=0A= tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A= delete attributes.name;=0A= return Element.writeAttribute(document.createElement(tagName), = attributes);=0A= }=0A= if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName));=0A= return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes);=0A= };=0A= Object.extend(global.Element, element || { });=0A= if (element) global.Element.prototype =3D element.prototype;=0A= })(this);=0A= =0A= Element.cache =3D { };=0A= Element.idCounter =3D 1;=0A= =0A= Element.Methods =3D {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function(element) {=0A= element =3D $(element);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= return element;=0A= },=0A= =0A= =0A= hide: function(element) {=0A= element =3D $(element);=0A= element.style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= element =3D $(element);=0A= element.style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: (function(){=0A= =0A= var SELECT_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A= var el =3D document.createElement("select"),=0A= isBuggy =3D true;=0A= el.innerHTML =3D "";=0A= if (el.options && el.options[0]) {=0A= isBuggy =3D el.options[0].nodeName.toUpperCase() !=3D=3D = "OPTION";=0A= }=0A= el =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= var TABLE_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A= try {=0A= var el =3D document.createElement("table");=0A= if (el && el.tBodies) {=0A= el.innerHTML =3D "test";=0A= var isBuggy =3D typeof el.tBodies[0] =3D=3D "undefined";=0A= el =3D null;=0A= return isBuggy;=0A= }=0A= } catch (e) {=0A= return true;=0A= }=0A= })();=0A= =0A= var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING =3D (function () {=0A= var s =3D document.createElement("script"),=0A= isBuggy =3D false;=0A= try {=0A= s.appendChild(document.createTextNode(""));=0A= isBuggy =3D !s.firstChild ||=0A= s.firstChild && s.firstChild.nodeType !=3D=3D 3;=0A= } catch (e) {=0A= isBuggy =3D true;=0A= }=0A= s =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= function update(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement)=0A= content =3D content.toElement();=0A= =0A= if (Object.isElement(content))=0A= return element.update().insert(content);=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= var tagName =3D element.tagName.toUpperCase();=0A= =0A= if (tagName =3D=3D=3D 'SCRIPT' && = SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {=0A= element.text =3D content;=0A= return element;=0A= }=0A= =0A= if (SELECT_ELEMENT_INNERHTML_BUGGY || = TABLE_ELEMENT_INNERHTML_BUGGY) {=0A= if (tagName in Element._insertionTranslations.tags) {=0A= $A(element.childNodes).each(function(node) {=0A= element.removeChild(node);=0A= });=0A= Element._getContentFromAnonymousElement(tagName, = content.stripScripts())=0A= .each(function(node) {=0A= element.appendChild(node)=0A= });=0A= }=0A= else {=0A= element.innerHTML =3D content.stripScripts();=0A= }=0A= }=0A= else {=0A= element.innerHTML =3D content.stripScripts();=0A= }=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= }=0A= =0A= return update;=0A= })(),=0A= =0A= replace: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= else if (!Object.isElement(content)) {=0A= content =3D Object.toHTML(content);=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNode(element);=0A= content.evalScripts.bind(content).defer();=0A= content =3D range.createContextualFragment(content.stripScripts());=0A= }=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= },=0A= =0A= insert: function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D {bottom:insertions};=0A= =0A= var content, insert, tagName, childNodes;=0A= =0A= for (var position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= insert =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= childNodes =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= =0A= if (position =3D=3D 'top' || position =3D=3D 'after') = childNodes.reverse();=0A= childNodes.each(insert.curry(element));=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= },=0A= =0A= wrap: function(element, wrapper, attributes) {=0A= element =3D $(element);=0A= if (Object.isElement(wrapper))=0A= $(wrapper).writeAttribute(attributes || { });=0A= else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes);=0A= else wrapper =3D new Element('div', wrapper);=0A= if (element.parentNode)=0A= element.parentNode.replaceChild(wrapper, element);=0A= wrapper.appendChild(element);=0A= return wrapper;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return $(element).recursivelyCollect('parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= return Element.select(element, "*");=0A= },=0A= =0A= firstDescendant: function(element) {=0A= element =3D $(element).firstChild;=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= return $(element);=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return $(element).recursivelyCollect('previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return $(element).recursivelyCollect('nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return = element.previousSiblings().reverse().concat(element.nextSiblings());=0A= },=0A= =0A= match: function(element, selector) {=0A= if (Object.isString(selector))=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return $(element.parentNode);=0A= var ancestors =3D element.ancestors();=0A= return Object.isNumber(expression) ? ancestors[expression] :=0A= Selector.findElement(ancestors, expression, index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= return Object.isNumber(expression) ? = element.descendants()[expression] :=0A= Element.select(element, expression)[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D element.previousSiblings();=0A= return Object.isNumber(expression) ? previousSiblings[expression] :=0A= Selector.findElement(previousSiblings, expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D element.nextSiblings();=0A= return Object.isNumber(expression) ? nextSiblings[expression] :=0A= Selector.findElement(nextSiblings, expression, index);=0A= },=0A= =0A= =0A= select: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= adjacent: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element.parentNode, = args).without(element);=0A= },=0A= =0A= identify: function(element) {=0A= element =3D $(element);=0A= var id =3D element.readAttribute('id');=0A= if (id) return id;=0A= do { id =3D 'anonymous_element_' + Element.idCounter++ } while = ($(id));=0A= element.writeAttribute('id', id);=0A= return id;=0A= },=0A= =0A= readAttribute: (function(){=0A= =0A= var iframeGetAttributeThrowsError =3D (function(){=0A= var el =3D document.createElement('iframe'),=0A= isBuggy =3D false;=0A= =0A= document.documentElement.appendChild(el);=0A= try {=0A= el.getAttribute('type', 2);=0A= } catch(e) {=0A= isBuggy =3D true;=0A= }=0A= document.documentElement.removeChild(el);=0A= el =3D null;=0A= return isBuggy;=0A= })();=0A= =0A= return function(element, name) {=0A= element =3D $(element);=0A= if (iframeGetAttributeThrowsError &&=0A= name =3D=3D=3D 'type' &&=0A= element.tagName.toUpperCase() =3D=3D 'IFRAME') {=0A= return element.getAttribute('type');=0A= }=0A= if (Prototype.Browser.IE) {=0A= var t =3D Element._attributeTranslations.read;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= if (name.include(':')) {=0A= return (!element.attributes || !element.attributes[name]) ? = null :=0A= element.attributes[name].value;=0A= }=0A= }=0A= return element.getAttribute(name);=0A= }=0A= })(),=0A= =0A= writeAttribute: function(element, name, value) {=0A= element =3D $(element);=0A= var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A= =0A= if (typeof name =3D=3D 'object') attributes =3D name;=0A= else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A= =0A= for (var attr in attributes) {=0A= name =3D t.names[attr] || attr;=0A= value =3D attributes[attr];=0A= if (t.values[attr]) name =3D t.values[attr](element, value);=0A= if (value =3D=3D=3D false || value =3D=3D=3D null)=0A= element.removeAttribute(name);=0A= else if (value =3D=3D=3D true)=0A= element.setAttribute(name, name);=0A= else element.setAttribute(name, value);=0A= }=0A= return element;=0A= },=0A= =0A= getHeight: function(element) {=0A= return $(element).getDimensions().height;=0A= },=0A= =0A= getWidth: function(element) {=0A= return $(element).getDimensions().width;=0A= },=0A= =0A= classNames: function(element) {=0A= return new Element.ClassNames(element);=0A= },=0A= =0A= hasClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= var elementClassName =3D element.className;=0A= return (elementClassName.length > 0 && (elementClassName =3D=3D = className ||=0A= new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName)));=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= if (!element.hasClassName(className))=0A= element.className +=3D (element.className ? ' ' : '') + className;=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= element.className =3D element.className.replace(=0A= new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return element[element.hasClassName(className) ?=0A= 'removeClassName' : 'addClassName'](className);=0A= },=0A= =0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.blank();=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (ancestor.contains)=0A= return ancestor.contains(element) && ancestor !=3D=3D element;=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D ancestor) return true;=0A= =0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D element.cumulativeOffset();=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value || value =3D=3D 'auto') {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= }=0A= if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= getOpacity: function(element) {=0A= return $(element).getStyle('opacity');=0A= },=0A= =0A= setStyle: function(element, styles) {=0A= element =3D $(element);=0A= var elementStyle =3D element.style, match;=0A= if (Object.isString(styles)) {=0A= element.style.cssText +=3D ';' + styles;=0A= return styles.include('opacity') ?=0A= element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element;=0A= }=0A= for (var property in styles)=0A= if (property =3D=3D 'opacity') = element.setOpacity(styles[property]);=0A= else=0A= elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ?=0A= (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : = 'styleFloat') :=0A= property] =3D styles[property];=0A= =0A= return element;=0A= },=0A= =0A= setOpacity: function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= var display =3D element.getStyle('display');=0A= if (display !=3D 'none' && display !=3D null) // Safari bug=0A= return {width: element.offsetWidth, height: element.offsetHeight};=0A= =0A= var els =3D element.style;=0A= var originalVisibility =3D els.visibility;=0A= var originalPosition =3D els.position;=0A= var originalDisplay =3D els.display;=0A= els.visibility =3D 'hidden';=0A= if (originalPosition !=3D 'fixed') // Switching fixed to absolute = causes issues in Safari=0A= els.position =3D 'absolute';=0A= els.display =3D 'block';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D originalDisplay;=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=0A= },=0A= =0A= makePositioned: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.getStyle(element, 'position');=0A= if (pos =3D=3D 'static' || !pos) {=0A= element._madePositioned =3D true;=0A= element.style.position =3D 'relative';=0A= if (Prototype.Browser.Opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto';=0A= if (element._overflow !=3D=3D 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if (element.tagName.toUpperCase() =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p !=3D=3D 'static') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'absolute') return element;=0A= =0A= var offsets =3D element.positionedOffset();=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.width =3D width + 'px';=0A= element.style.height =3D height + 'px';=0A= return element;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'relative') return element;=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= return element;=0A= },=0A= =0A= cumulativeScrollOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= getOffsetParent: function(element) {=0A= if (element.offsetParent) return $(element.offsetParent);=0A= if (element =3D=3D document.body) return $(element);=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return $(element);=0A= =0A= return $(document.body);=0A= },=0A= =0A= viewportOffset: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= if (element.offsetParent =3D=3D document.body &&=0A= Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!Prototype.Browser.Opera || (element.tagName && = (element.tagName.toUpperCase() =3D=3D 'BODY'))) {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= clonePosition: function(element, source) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || { });=0A= =0A= source =3D $(source);=0A= var p =3D source.viewportOffset();=0A= =0A= element =3D $(element);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A= parent =3D element.getOffsetParent();=0A= delta =3D parent.viewportOffset();=0A= }=0A= =0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px';=0A= if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px';=0A= return element;=0A= }=0A= };=0A= =0A= Object.extend(Element.Methods, {=0A= getElementsBySelector: Element.Methods.select,=0A= =0A= childElements: Element.Methods.immediateDescendants=0A= });=0A= =0A= Element._attributeTranslations =3D {=0A= write: {=0A= names: {=0A= className: 'class',=0A= htmlFor: 'for'=0A= },=0A= values: { }=0A= }=0A= };=0A= =0A= if (Prototype.Browser.Opera) {=0A= Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A= function(proceed, element, style) {=0A= switch (style) {=0A= case 'left': case 'top': case 'right': case 'bottom':=0A= if (proceed(element, 'position') =3D=3D=3D 'static') return = null;=0A= case 'height': case 'width':=0A= if (!Element.visible(element)) return null;=0A= =0A= var dim =3D parseInt(proceed(element, style), 10);=0A= =0A= if (dim !=3D=3D element['offset' + style.capitalize()])=0A= return dim + 'px';=0A= =0A= var properties;=0A= if (style =3D=3D=3D 'height') {=0A= properties =3D ['border-top-width', 'padding-top',=0A= 'padding-bottom', 'border-bottom-width'];=0A= }=0A= else {=0A= properties =3D ['border-left-width', 'padding-left',=0A= 'padding-right', 'border-right-width'];=0A= }=0A= return properties.inject(dim, function(memo, property) {=0A= var val =3D proceed(element, property);=0A= return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A= }) + 'px';=0A= default: return proceed(element, style);=0A= }=0A= }=0A= );=0A= =0A= Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A= function(proceed, element, attribute) {=0A= if (attribute =3D=3D=3D 'title') return element.title;=0A= return proceed(element, attribute);=0A= }=0A= );=0A= }=0A= =0A= else if (Prototype.Browser.IE) {=0A= Element.Methods.getOffsetParent =3D = Element.Methods.getOffsetParent.wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= try { element.offsetParent }=0A= catch(e) { return $(document.body) }=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= =0A= $w('positionedOffset viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= try { element.offsetParent }=0A= catch(e) { return Element._returnOffset(0,0) }=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= var offsetParent =3D element.getOffsetParent();=0A= if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D = 'fixed')=0A= offsetParent.setStyle({ zoom: 1 });=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= });=0A= =0A= Element.Methods.cumulativeOffset =3D = Element.Methods.cumulativeOffset.wrap(=0A= function(proceed, element) {=0A= try { element.offsetParent }=0A= catch(e) { return Element._returnOffset(0,0) }=0A= return proceed(element);=0A= }=0A= );=0A= =0A= Element.Methods.getStyle =3D function(element, style) {=0A= element =3D $(element);=0A= style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value && element.currentStyle) value =3D = element.currentStyle[style];=0A= =0A= if (style =3D=3D 'opacity') {=0A= if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/))=0A= if (value[1]) return parseFloat(value[1]) / 100;=0A= return 1.0;=0A= }=0A= =0A= if (value =3D=3D 'auto') {=0A= if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none'))=0A= return element['offset' + style.capitalize()] + 'px';=0A= return null;=0A= }=0A= return value;=0A= };=0A= =0A= Element.Methods.setOpacity =3D function(element, value) {=0A= function stripAlpha(filter){=0A= return filter.replace(/alpha\([^\)]*\)/gi,'');=0A= }=0A= element =3D $(element);=0A= var currentStyle =3D element.currentStyle;=0A= if ((currentStyle && !currentStyle.hasLayout) ||=0A= (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A= element.style.zoom =3D 1;=0A= =0A= var filter =3D element.getStyle('filter'), style =3D element.style;=0A= if (value =3D=3D 1 || value =3D=3D=3D '') {=0A= (filter =3D stripAlpha(filter)) ?=0A= style.filter =3D filter : style.removeAttribute('filter');=0A= return element;=0A= } else if (value < 0.00001) value =3D 0;=0A= style.filter =3D stripAlpha(filter) +=0A= 'alpha(opacity=3D' + (value * 100) + ')';=0A= return element;=0A= };=0A= =0A= Element._attributeTranslations =3D (function(){=0A= =0A= var classProp =3D 'className';=0A= var forProp =3D 'for';=0A= =0A= var el =3D document.createElement('div');=0A= =0A= el.setAttribute(classProp, 'x');=0A= =0A= if (el.className !=3D=3D 'x') {=0A= el.setAttribute('class', 'x');=0A= if (el.className =3D=3D=3D 'x') {=0A= classProp =3D 'class';=0A= }=0A= }=0A= el =3D null;=0A= =0A= el =3D document.createElement('label');=0A= el.setAttribute(forProp, 'x');=0A= if (el.htmlFor !=3D=3D 'x') {=0A= el.setAttribute('htmlFor', 'x');=0A= if (el.htmlFor =3D=3D=3D 'x') {=0A= forProp =3D 'htmlFor';=0A= }=0A= }=0A= el =3D null;=0A= =0A= return {=0A= read: {=0A= names: {=0A= 'class': classProp,=0A= 'className': classProp,=0A= 'for': forProp,=0A= 'htmlFor': forProp=0A= },=0A= values: {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= _getAttrNode: function(element, attribute) {=0A= var node =3D element.getAttributeNode(attribute);=0A= return node ? node.value : "";=0A= },=0A= _getEv: (function(){=0A= =0A= var el =3D document.createElement('div');=0A= el.onclick =3D Prototype.emptyFunction;=0A= var value =3D el.getAttribute('onclick');=0A= var f;=0A= =0A= if (String(value).indexOf('{') > -1) {=0A= f =3D function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= if (!attribute) return null;=0A= attribute =3D attribute.toString();=0A= attribute =3D attribute.split('{')[1];=0A= attribute =3D attribute.split('}')[0];=0A= return attribute.strip();=0A= }=0A= }=0A= else if (value =3D=3D=3D '') {=0A= f =3D function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= if (!attribute) return null;=0A= return attribute.strip();=0A= }=0A= }=0A= el =3D null;=0A= return f;=0A= })(),=0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= title: function(element) {=0A= return element.title;=0A= }=0A= }=0A= }=0A= }=0A= })();=0A= =0A= Element._attributeTranslations.write =3D {=0A= names: Object.extend({=0A= cellpadding: 'cellPadding',=0A= cellspacing: 'cellSpacing'=0A= }, Element._attributeTranslations.read.names),=0A= values: {=0A= checked: function(element, value) {=0A= element.checked =3D !!value;=0A= },=0A= =0A= style: function(element, value) {=0A= element.style.cssText =3D value ? value : '';=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.has =3D {};=0A= =0A= $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A= 'encType maxLength readOnly longDesc = frameBorder').each(function(attr) {=0A= Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr;=0A= Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A= });=0A= =0A= (function(v) {=0A= Object.extend(v, {=0A= href: v._getAttr,=0A= src: v._getAttr,=0A= type: v._getAttr,=0A= action: v._getAttrNode,=0A= disabled: v._flag,=0A= checked: v._flag,=0A= readonly: v._flag,=0A= multiple: v._flag,=0A= onload: v._getEv,=0A= onunload: v._getEv,=0A= onclick: v._getEv,=0A= ondblclick: v._getEv,=0A= onmousedown: v._getEv,=0A= onmouseup: v._getEv,=0A= onmouseover: v._getEv,=0A= onmousemove: v._getEv,=0A= onmouseout: v._getEv,=0A= onfocus: v._getEv,=0A= onblur: v._getEv,=0A= onkeypress: v._getEv,=0A= onkeydown: v._getEv,=0A= onkeyup: v._getEv,=0A= onsubmit: v._getEv,=0A= onreset: v._getEv,=0A= onselect: v._getEv,=0A= onchange: v._getEv=0A= });=0A= })(Element._attributeTranslations.read.values);=0A= =0A= if (Prototype.BrowserFeatures.ElementExtensions) {=0A= (function() {=0A= function _descendants(element) {=0A= var nodes =3D element.getElementsByTagName('*'), results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName !=3D=3D "!") // Filter out comment nodes.=0A= results.push(node);=0A= return results;=0A= }=0A= =0A= Element.Methods.down =3D function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= return Object.isNumber(expression) ? = _descendants(element)[expression] :=0A= Element.select(element, expression)[index || 0];=0A= }=0A= })();=0A= }=0A= =0A= }=0A= =0A= else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A= (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A= return element;=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.WebKit) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= =0A= if (value =3D=3D 1)=0A= if(element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) {=0A= element.width++; element.width--;=0A= } else try {=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch (e) { }=0A= =0A= return element;=0A= };=0A= =0A= Element.Methods.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= };=0A= }=0A= =0A= if ('outerHTML' in document.documentElement) {=0A= Element.Methods.replace =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase();=0A= =0A= if (Element._insertionTranslations.tags[tagName]) {=0A= var nextSibling =3D element.next();=0A= var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= parent.removeChild(element);=0A= if (nextSibling)=0A= fragments.each(function(node) { parent.insertBefore(node, = nextSibling) });=0A= else=0A= fragments.each(function(node) { parent.appendChild(node) });=0A= }=0A= else element.outerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= Element._returnOffset =3D function(l, t) {=0A= var result =3D [l, t];=0A= result.left =3D l;=0A= result.top =3D t;=0A= return result;=0A= };=0A= =0A= Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A= var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName];=0A= if (t) {=0A= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= } else div.innerHTML =3D html;=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= top: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= bottom: function(element, node) {=0A= element.appendChild(node);=0A= },=0A= after: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= tags: {=0A= TABLE: ['', '
', 1],=0A= TBODY: ['', '
', 2],=0A= TR: ['', '
', 3],=0A= TD: ['
', '
', 4],=0A= SELECT: ['', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= Object.extend(this.tags, {=0A= THEAD: this.tags.TBODY,=0A= TFOOT: this.tags.TBODY,=0A= TH: this.tags.TD=0A= });=0A= }).call(Element._insertionTranslations);=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= attribute =3D Element._attributeTranslations.has[attribute] || = attribute;=0A= var node =3D $(element).getAttributeNode(attribute);=0A= return !!(node && node.specified);=0A= }=0A= };=0A= =0A= Element.Methods.ByTag =3D { };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= (function(div) {=0A= =0A= if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {=0A= window.HTMLElement =3D { };=0A= window.HTMLElement.prototype =3D div['__proto__'];=0A= Prototype.BrowserFeatures.ElementExtensions =3D true;=0A= }=0A= =0A= div =3D null;=0A= =0A= })(document.createElement('div'))=0A= =0A= Element.extend =3D (function() {=0A= =0A= function checkDeficiency(tagName) {=0A= if (typeof window.Element !=3D 'undefined') {=0A= var proto =3D window.Element.prototype;=0A= if (proto) {=0A= var id =3D '_' + (Math.random()+'').slice(2);=0A= var el =3D document.createElement(tagName);=0A= proto[id] =3D 'x';=0A= var isBuggy =3D (el[id] !=3D=3D 'x');=0A= delete proto[id];=0A= el =3D null;=0A= return isBuggy;=0A= }=0A= }=0A= return false;=0A= }=0A= =0A= function extendElementWith(element, methods) {=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (Object.isFunction(value) && !(property in element))=0A= element[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('object');=0A= var HTMLAPPLETELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('applet');=0A= =0A= if (Prototype.BrowserFeatures.SpecificElementExtensions) {=0A= if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY &&=0A= HTMLAPPLETELEMENT_PROTOTYPE_BUGGY) {=0A= return function(element) {=0A= if (element && element.tagName) {=0A= var tagName =3D element.tagName.toUpperCase();=0A= if (tagName =3D=3D=3D 'OBJECT' || tagName =3D=3D=3D 'APPLET') {=0A= extendElementWith(element, Element.Methods);=0A= if (tagName =3D=3D=3D 'OBJECT') {=0A= extendElementWith(element, Element.Methods.ByTag.OBJECT)=0A= }=0A= else if (tagName =3D=3D=3D 'APPLET') {=0A= extendElementWith(element, Element.Methods.ByTag.APPLET)=0A= }=0A= }=0A= }=0A= return element;=0A= }=0A= }=0A= return Prototype.K;=0A= }=0A= =0A= var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A= =0A= var extend =3D Object.extend(function(element) {=0A= if (!element || typeof element._extendedByPrototype !=3D 'undefined' = ||=0A= element.nodeType !=3D 1 || element =3D=3D window) return element;=0A= =0A= var methods =3D Object.clone(Methods),=0A= tagName =3D element.tagName.toUpperCase();=0A= =0A= if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A= =0A= extendElementWith(element, methods);=0A= =0A= element._extendedByPrototype =3D Prototype.emptyFunction;=0A= return element;=0A= =0A= }, {=0A= refresh: function() {=0A= if (!Prototype.BrowserFeatures.ElementExtensions) {=0A= Object.extend(Methods, Element.Methods);=0A= Object.extend(Methods, Element.Methods.Simulated);=0A= }=0A= }=0A= });=0A= =0A= extend.refresh();=0A= return extend;=0A= })();=0A= =0A= Element.hasAttribute =3D function(element, attribute) {=0A= if (element.hasAttribute) return element.hasAttribute(attribute);=0A= return Element.Methods.Simulated.hasAttribute(element, attribute);=0A= };=0A= =0A= Element.addMethods =3D function(methods) {=0A= var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A= =0A= if (!methods) {=0A= Object.extend(Form, Form.Methods);=0A= Object.extend(Form.Element, Form.Element.Methods);=0A= Object.extend(Element.Methods.ByTag, {=0A= "FORM": Object.clone(Form.Methods),=0A= "INPUT": Object.clone(Form.Element.Methods),=0A= "SELECT": Object.clone(Form.Element.Methods),=0A= "TEXTAREA": Object.clone(Form.Element.Methods)=0A= });=0A= }=0A= =0A= if (arguments.length =3D=3D 2) {=0A= var tagName =3D methods;=0A= methods =3D arguments[1];=0A= }=0A= =0A= if (!tagName) Object.extend(Element.Methods, methods || { });=0A= else {=0A= if (Object.isArray(tagName)) tagName.each(extend);=0A= else extend(tagName);=0A= }=0A= =0A= function extend(tagName) {=0A= tagName =3D tagName.toUpperCase();=0A= if (!Element.Methods.ByTag[tagName])=0A= Element.Methods.ByTag[tagName] =3D { };=0A= Object.extend(Element.Methods.ByTag[tagName], methods);=0A= }=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!Object.isFunction(value)) continue;=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= function findDOMClass(tagName) {=0A= var klass;=0A= var trans =3D {=0A= "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A= "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList",=0A= "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading",=0A= "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A= "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION":=0A= "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A= "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR":=0A= "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A= "FrameSet", "IFRAME": "IFrame"=0A= };=0A= if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A= if (window[klass]) return window[klass];=0A= =0A= var element =3D document.createElement(tagName);=0A= var proto =3D element['__proto__'] || element.constructor.prototype;=0A= element =3D null;=0A= return proto;=0A= }=0A= =0A= var elementPrototype =3D window.HTMLElement ? HTMLElement.prototype :=0A= Element.prototype;=0A= =0A= if (F.ElementExtensions) {=0A= copy(Element.Methods, elementPrototype);=0A= copy(Element.Methods.Simulated, elementPrototype, true);=0A= }=0A= =0A= if (F.SpecificElementExtensions) {=0A= for (var tag in Element.Methods.ByTag) {=0A= var klass =3D findDOMClass(tag);=0A= if (Object.isUndefined(klass)) continue;=0A= copy(T[tag], klass.prototype);=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= delete Element.ByTag;=0A= =0A= if (Element.extend.refresh) Element.extend.refresh();=0A= Element.cache =3D { };=0A= };=0A= =0A= =0A= document.viewport =3D {=0A= =0A= getDimensions: function() {=0A= return { width: this.getWidth(), height: this.getHeight() };=0A= },=0A= =0A= getScrollOffsets: function() {=0A= return Element._returnOffset(=0A= window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft,=0A= window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop);=0A= }=0A= };=0A= =0A= (function(viewport) {=0A= var B =3D Prototype.Browser, doc =3D document, element, property =3D = {};=0A= =0A= function getRootElement() {=0A= if (B.WebKit && !doc.evaluate)=0A= return document;=0A= =0A= if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)=0A= return document.body;=0A= =0A= return document.documentElement;=0A= }=0A= =0A= function define(D) {=0A= if (!element) element =3D getRootElement();=0A= =0A= property[D] =3D 'client' + D;=0A= =0A= viewport['get' + D] =3D function() { return element[property[D]] };=0A= return viewport['get' + D]();=0A= }=0A= =0A= viewport.getWidth =3D define.curry('Width');=0A= =0A= viewport.getHeight =3D define.curry('Height');=0A= })(document.viewport);=0A= =0A= =0A= Element.Storage =3D {=0A= UID: 1=0A= };=0A= =0A= Element.addMethods({=0A= getStorage: function(element) {=0A= if (!(element =3D $(element))) return;=0A= =0A= var uid;=0A= if (element =3D=3D=3D window) {=0A= uid =3D 0;=0A= } else {=0A= if (typeof element._prototypeUID =3D=3D=3D "undefined")=0A= element._prototypeUID =3D [Element.Storage.UID++];=0A= uid =3D element._prototypeUID[0];=0A= }=0A= =0A= if (!Element.Storage[uid])=0A= Element.Storage[uid] =3D $H();=0A= =0A= return Element.Storage[uid];=0A= },=0A= =0A= store: function(element, key, value) {=0A= if (!(element =3D $(element))) return;=0A= =0A= if (arguments.length =3D=3D=3D 2) {=0A= element.getStorage().update(key);=0A= } else {=0A= element.getStorage().set(key, value);=0A= }=0A= =0A= return element;=0A= },=0A= =0A= retrieve: function(element, key, defaultValue) {=0A= if (!(element =3D $(element))) return;=0A= var hash =3D Element.getStorage(element), value =3D hash.get(key);=0A= =0A= if (Object.isUndefined(value)) {=0A= hash.set(key, defaultValue);=0A= value =3D defaultValue;=0A= }=0A= =0A= return value;=0A= },=0A= =0A= clone: function(element, deep) {=0A= if (!(element =3D $(element))) return;=0A= var clone =3D element.cloneNode(deep);=0A= clone._prototypeUID =3D void 0;=0A= if (deep) {=0A= var descendants =3D Element.select(clone, '*'),=0A= i =3D descendants.length;=0A= while (i--) {=0A= descendants[i]._prototypeUID =3D void 0;=0A= }=0A= }=0A= return Element.extend(clone);=0A= }=0A= });=0A= /* Portions of the Selector class are derived from Jack Slocum's = DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= =0A= if (this.shouldUseSelectorsAPI()) {=0A= this.mode =3D 'selectorsAPI';=0A= } else if (this.shouldUseXPath()) {=0A= this.mode =3D 'xpath';=0A= this.compileXPathMatcher();=0A= } else {=0A= this.mode =3D "normal";=0A= this.compileMatcher();=0A= }=0A= =0A= },=0A= =0A= shouldUseXPath: (function() {=0A= =0A= var IS_DESCENDANT_SELECTOR_BUGGY =3D (function(){=0A= var isBuggy =3D false;=0A= if (document.evaluate && window.XPathResult) {=0A= var el =3D document.createElement('div');=0A= el.innerHTML =3D = '
';=0A= =0A= var xpath =3D ".//*[local-name()=3D'ul' or local-name()=3D'UL']" = +=0A= "//*[local-name()=3D'li' or local-name()=3D'LI']";=0A= =0A= var result =3D document.evaluate(xpath, el, null,=0A= XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= =0A= isBuggy =3D (result.snapshotLength !=3D=3D 2);=0A= el =3D null;=0A= }=0A= return isBuggy;=0A= })();=0A= =0A= return function() {=0A= if (!Prototype.BrowserFeatures.XPath) return false;=0A= =0A= var e =3D this.expression;=0A= =0A= if (Prototype.Browser.WebKit &&=0A= (e.include("-of-type") || e.include(":empty")))=0A= return false;=0A= =0A= if ((/(\[[\w-]*?:|:checked)/).test(e))=0A= return false;=0A= =0A= if (IS_DESCENDANT_SELECTOR_BUGGY) return false;=0A= =0A= return true;=0A= }=0A= =0A= })(),=0A= =0A= shouldUseSelectorsAPI: function() {=0A= if (!Prototype.BrowserFeatures.SelectorsAPI) return false;=0A= =0A= if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false;=0A= =0A= if (!Selector._div) Selector._div =3D new Element('div');=0A= =0A= try {=0A= Selector._div.querySelector(this.expression);=0A= } catch(e) {=0A= return false;=0A= }=0A= =0A= return true;=0A= },=0A= =0A= compileMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m, len =3D ps.length, name;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=0A= return;=0A= }=0A= =0A= this.matcher =3D ["this.matcher =3D function(root) {",=0A= "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"];=0A= =0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i =3D 0; i";=0A= }=0A= });=0A= =0A= if (Prototype.BrowserFeatures.SelectorsAPI &&=0A= document.compatMode =3D=3D=3D 'BackCompat') {=0A= Selector.CASE_INSENSITIVE_CLASS_NAMES =3D (function(){=0A= var div =3D document.createElement('div'),=0A= span =3D document.createElement('span');=0A= =0A= div.id =3D "prototype_test_id";=0A= span.className =3D 'Test';=0A= div.appendChild(span);=0A= var isIgnored =3D (div.querySelector('#prototype_test_id .test') = !=3D=3D null);=0A= div =3D span =3D null;=0A= return isIgnored;=0A= })();=0A= }=0A= =0A= Object.extend(Selector, {=0A= _cache: { },=0A= =0A= xpath: {=0A= descendant: "//*",=0A= child: "/*",=0A= adjacent: "/following-sibling::*[1]",=0A= laterSibling: '/following-sibling::*',=0A= tagName: function(m) {=0A= if (m[1] =3D=3D '*') return '';=0A= return "[local-name()=3D'" + m[1].toLowerCase() +=0A= "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A= },=0A= className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A= id: "[@id=3D'#{1}']",=0A= attrPresence: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= return new Template("[@#{1}]").evaluate(m);=0A= },=0A= attr: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= m[3] =3D m[5] || m[6];=0A= return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= var h =3D Selector.xpath.pseudos[m[1]];=0A= if (!h) return '';=0A= if (Object.isFunction(h)) return h(m);=0A= return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A= },=0A= operators: {=0A= '=3D': "[@#{1}=3D'#{3}']",=0A= '!=3D': "[@#{1}!=3D'#{3}']",=0A= '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A= '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']",=0A= '*=3D': "[contains(@#{1}, '#{3}')]",=0A= '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A= '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A= },=0A= pseudos: {=0A= 'first-child': '[not(preceding-sibling::*)]',=0A= 'last-child': '[not(following-sibling::*)]',=0A= 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]',=0A= 'empty': "[count(*) =3D 0 and (count(text()) =3D 0)]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[(@disabled) and (@type!=3D'hidden')]",=0A= 'enabled': "[not(@disabled) and (@type!=3D'hidden')]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, v, len =3D p.length, name;=0A= =0A= var exclusion =3D [];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i =3D 0; i=3D 0)]";=0A= return new Template(predicate).evaluate({=0A= fragment: fragment, a: a, b: b });=0A= }=0A= }=0A= }=0A= },=0A= =0A= criteria: {=0A= tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;',=0A= className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A= id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;',=0A= attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", = c); c =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: [=0A= { name: 'laterSibling', re: /^\s*~\s*/ },=0A= { name: 'child', re: /^\s*>\s*/ },=0A= { name: 'adjacent', re: /^\s*\+\s*/ },=0A= { name: 'descendant', re: /^\s/ },=0A= =0A= { name: 'tagName', re: /^\s*(\*|[\w\-]+)(\b|$)?/ },=0A= { name: 'id', re: /^#([\w\-\*]+)(\b|$)/ },=0A= { name: 'className', re: /^\.([\w\-\*]+)(\b|$)/ },=0A= { name: 'pseudo', re: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/ },=0A= { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ },=0A= { name: 'attr', re: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/ }=0A= ],=0A= =0A= assertions: {=0A= tagName: function(element, matches) {=0A= return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase();=0A= },=0A= =0A= className: function(element, matches) {=0A= return Element.hasClassName(element, matches[1]);=0A= },=0A= =0A= id: function(element, matches) {=0A= return element.id =3D=3D=3D matches[1];=0A= },=0A= =0A= attrPresence: function(element, matches) {=0A= return Element.hasAttribute(element, matches[1]);=0A= },=0A= =0A= attr: function(element, matches) {=0A= var nodeValue =3D Element.readAttribute(element, matches[1]);=0A= return nodeValue && Selector.operators[matches[2]](nodeValue, = matches[5] || matches[6]);=0A= }=0A= },=0A= =0A= handlers: {=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= a.push(node);=0A= return a;=0A= },=0A= =0A= mark: function(nodes) {=0A= var _true =3D Prototype.emptyFunction;=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D _true;=0A= return nodes;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D undefined;=0A= return nodes;=0A= },=0A= =0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (typeof (n =3D nodes[i])._countedByPrototype =3D=3D = 'undefined') {=0A= n._countedByPrototype =3D Prototype.emptyFunction;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= tagName: function(nodes, root, tagName, combinator) {=0A= var uTagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D=3D uTagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= =0A= if (root =3D=3D document) {=0A= if (!targetNode) return [];=0A= if (!nodes) return [targetNode];=0A= } else {=0A= if (!root.sourceIndex || root.sourceIndex < 1) {=0A= var nodes =3D root.getElementsByTagName('*');=0A= for (var j =3D 0, node; node =3D nodes[j]; j++) {=0A= if (node.id =3D=3D=3D id) return [node];=0A= }=0A= }=0A= }=0A= =0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D 'child') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (targetNode.parentNode =3D=3D node) return [targetNode];=0A= } else if (combinator =3D=3D 'descendant') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.descendantOf(targetNode, node)) return = [targetNode];=0A= } else if (combinator =3D=3D 'adjacent') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node)=0A= return [targetNode];=0A= } else nodes =3D h[combinator](nodes);=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node =3D=3D targetNode) return [targetNode];=0A= return [];=0A= }=0A= return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : [];=0A= },=0A= =0A= className: function(nodes, root, className, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= return Selector.handlers.byClassName(nodes, root, className);=0A= },=0A= =0A= byClassName: function(nodes, root, className) {=0A= if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A= var needle =3D ' ' + className + ' ';=0A= for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) {=0A= nodeClassName =3D node.className;=0A= if (nodeClassName.length =3D=3D 0) continue;=0A= if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle))=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= attrPresence: function(nodes, root, attr, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._countedByPrototype) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (node.tagName =3D=3D '!' || node.firstChild) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._countedByPrototype) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled && (!node.type || node.type !=3D=3D 'hidden'))=0A= results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); = },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() +=0A= '-').include('-' + (v || "").toUpperCase() + '-'); }=0A= },=0A= =0A= split: function(expression) {=0A= var expressions =3D [];=0A= expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, = function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= return expressions;=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D $$(expression), h =3D Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._countedByPrototype) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (Object.isNumber(expression)) {=0A= index =3D expression; expression =3D false;=0A= }=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= expressions =3D Selector.split(expressions.join(','));=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(Selector.handlers, {=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= if (node.tagName !=3D=3D "!") a.push(node);=0A= return a;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node.removeAttribute('_countedByPrototype');=0A= return nodes;=0A= }=0A= });=0A= }=0A= =0A= function $$() {=0A= return Selector.findChildElements(document, $A(arguments));=0A= }=0A= =0A= var Form =3D {=0A= reset: function(form) {=0A= form =3D $(form);=0A= form.reset();=0A= return form;=0A= },=0A= =0A= serializeElements: function(elements, options) {=0A= if (typeof options !=3D 'object') options =3D { hash: !!options };=0A= else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A= var key, value, submitted =3D false, submit =3D options.submit;=0A= =0A= var data =3D elements.inject({ }, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= key =3D element.name; value =3D $(element).getValue();=0A= if (value !=3D null && element.type !=3D 'file' && (element.type = !=3D 'submit' || (!submitted &&=0A= submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) {=0A= if (key in result) {=0A= if (!Object.isArray(result[key])) result[key] =3D = [result[key]];=0A= result[key].push(value);=0A= }=0A= else result[key] =3D value;=0A= }=0A= }=0A= return result;=0A= });=0A= =0A= return options.hash ? data : Object.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, options) {=0A= return Form.serializeElements(Form.getElements(form), options);=0A= },=0A= =0A= getElements: function(form) {=0A= var elements =3D $(form).getElementsByTagName('*'),=0A= element,=0A= arr =3D [ ],=0A= serializers =3D Form.Element.Serializers;=0A= for (var i =3D 0; element =3D elements[i]; i++) {=0A= arr.push(element);=0A= }=0A= return arr.inject([], function(elements, child) {=0A= if (serializers[child.tagName.toLowerCase()])=0A= elements.push(Element.extend(child));=0A= return elements;=0A= })=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name) return $A(inputs).map(Element.extend);=0A= =0A= for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('disable');=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('enable');=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= var elements =3D $(form).getElements().findAll(function(element) {=0A= return 'hidden' !=3D element.type && !element.disabled;=0A= });=0A= var firstByIndex =3D elements.findAll(function(element) {=0A= return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A= }).sortBy(function(element) { return element.tabIndex }).first();=0A= =0A= return firstByIndex ? firstByIndex : elements.find(function(element) = {=0A= return ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= },=0A= =0A= request: function(form, options) {=0A= form =3D $(form), options =3D Object.clone(options || { });=0A= =0A= var params =3D options.parameters, action =3D = form.readAttribute('action') || '';=0A= if (action.blank()) action =3D window.location.href;=0A= options.parameters =3D form.serialize(true);=0A= =0A= if (params) {=0A= if (Object.isString(params)) params =3D params.toQueryParams();=0A= Object.extend(options.parameters, params);=0A= }=0A= =0A= if (form.hasAttribute('method') && !options.method)=0A= options.method =3D form.method;=0A= =0A= return new Ajax.Request(action, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= =0A= Form.Element =3D {=0A= focus: function(element) {=0A= $(element).focus();=0A= return element;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= return element;=0A= }=0A= };=0A= =0A= Form.Element.Methods =3D {=0A= =0A= serialize: function(element) {=0A= element =3D $(element);=0A= if (!element.disabled && element.name) {=0A= var value =3D element.getValue();=0A= if (value !=3D undefined) {=0A= var pair =3D { };=0A= pair[element.name] =3D value;=0A= return Object.toQueryString(pair);=0A= }=0A= }=0A= return '';=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= return Form.Element.Serializers[method](element);=0A= },=0A= =0A= setValue: function(element, value) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= Form.Element.Serializers[method](element, value);=0A= return element;=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= try {=0A= element.focus();=0A= if (element.select && (element.tagName.toLowerCase() !=3D 'input' = ||=0A= !['button', 'reset', 'submit'].include(element.type)))=0A= element.select();=0A= } catch (e) { }=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= =0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, value) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element, value);=0A= default:=0A= return Form.Element.Serializers.textarea(element, value);=0A= }=0A= },=0A= =0A= inputSelector: function(element, value) {=0A= if (Object.isUndefined(value)) return element.checked ? = element.value : null;=0A= else element.checked =3D !!value;=0A= },=0A= =0A= textarea: function(element, value) {=0A= if (Object.isUndefined(value)) return element.value;=0A= else element.value =3D value;=0A= },=0A= =0A= select: function(element, value) {=0A= if (Object.isUndefined(value))=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, currentValue, single =3D !Object.isArray(value);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= currentValue =3D this.optionValue(opt);=0A= if (single) {=0A= if (currentValue =3D=3D value) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D value.include(currentValue);=0A= }=0A= }=0A= },=0A= =0A= selectOne: function(element) {=0A= var index =3D element.selectedIndex;=0A= return index >=3D 0 ? this.optionValue(element.options[index]) : = null;=0A= },=0A= =0A= selectMany: function(element) {=0A= var values, length =3D element.length;=0A= if (!length) return null;=0A= =0A= for (var i =3D 0, values =3D []; i < length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) values.push(this.optionValue(opt));=0A= }=0A= return values;=0A= },=0A= =0A= optionValue: function(opt) {=0A= return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= =0A= Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A= initialize: function($super, element, frequency, callback) {=0A= $super(callback, frequency);=0A= this.element =3D $(element);=0A= this.lastValue =3D this.getValue();=0A= },=0A= =0A= execute: function() {=0A= var value =3D this.getValue();=0A= if (Object.isString(this.lastValue) && Object.isString(value) ?=0A= this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= });=0A= =0A= Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D Class.create({=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= Form.getElements(this.element).each(this.registerCallback, this);=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= });=0A= =0A= Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= (function() {=0A= =0A= var Event =3D {=0A= KEY_BACKSPACE: 8,=0A= KEY_TAB: 9,=0A= KEY_RETURN: 13,=0A= KEY_ESC: 27,=0A= KEY_LEFT: 37,=0A= KEY_UP: 38,=0A= KEY_RIGHT: 39,=0A= KEY_DOWN: 40,=0A= KEY_DELETE: 46,=0A= KEY_HOME: 36,=0A= KEY_END: 35,=0A= KEY_PAGEUP: 33,=0A= KEY_PAGEDOWN: 34,=0A= KEY_INSERT: 45,=0A= =0A= cache: {}=0A= };=0A= =0A= var _isButton;=0A= if (Prototype.Browser.IE) {=0A= var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A= _isButton =3D function(event, code) {=0A= return event.button =3D=3D=3D buttonMap[code];=0A= };=0A= } else if (Prototype.Browser.WebKit) {=0A= _isButton =3D function(event, code) {=0A= switch (code) {=0A= case 0: return event.which =3D=3D 1 && !event.metaKey;=0A= case 1: return event.which =3D=3D 1 && event.metaKey;=0A= default: return false;=0A= }=0A= };=0A= } else {=0A= _isButton =3D function(event, code) {=0A= return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code);=0A= };=0A= }=0A= =0A= function isLeftClick(event) { return _isButton(event, 0) }=0A= =0A= function isMiddleClick(event) { return _isButton(event, 1) }=0A= =0A= function isRightClick(event) { return _isButton(event, 2) }=0A= =0A= function element(event) {=0A= event =3D Event.extend(event);=0A= =0A= var node =3D event.target, type =3D event.type,=0A= currentTarget =3D event.currentTarget;=0A= =0A= if (currentTarget && currentTarget.tagName) {=0A= if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' ||=0A= (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() = =3D=3D=3D 'input'=0A= && currentTarget.type =3D=3D=3D 'radio'))=0A= node =3D currentTarget;=0A= }=0A= =0A= if (node.nodeType =3D=3D Node.TEXT_NODE)=0A= node =3D node.parentNode;=0A= =0A= return Element.extend(node);=0A= }=0A= =0A= function findElement(event, expression) {=0A= var element =3D Event.element(event);=0A= if (!expression) return element;=0A= var elements =3D [element].concat(element.ancestors());=0A= return Selector.findElement(elements, expression, 0);=0A= }=0A= =0A= function pointer(event) {=0A= return { x: pointerX(event), y: pointerY(event) };=0A= }=0A= =0A= function pointerX(event) {=0A= var docElement =3D document.documentElement,=0A= body =3D document.body || { scrollLeft: 0 };=0A= =0A= return event.pageX || (event.clientX +=0A= (docElement.scrollLeft || body.scrollLeft) -=0A= (docElement.clientLeft || 0));=0A= }=0A= =0A= function pointerY(event) {=0A= var docElement =3D document.documentElement,=0A= body =3D document.body || { scrollTop: 0 };=0A= =0A= return event.pageY || (event.clientY +=0A= (docElement.scrollTop || body.scrollTop) -=0A= (docElement.clientTop || 0));=0A= }=0A= =0A= =0A= function stop(event) {=0A= Event.extend(event);=0A= event.preventDefault();=0A= event.stopPropagation();=0A= =0A= event.stopped =3D true;=0A= }=0A= =0A= Event.Methods =3D {=0A= isLeftClick: isLeftClick,=0A= isMiddleClick: isMiddleClick,=0A= isRightClick: isRightClick,=0A= =0A= element: element,=0A= findElement: findElement,=0A= =0A= pointer: pointer,=0A= pointerX: pointerX,=0A= pointerY: pointerY,=0A= =0A= stop: stop=0A= };=0A= =0A= =0A= var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) {=0A= m[name] =3D Event.Methods[name].methodize();=0A= return m;=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= function _relatedTarget(event) {=0A= var element;=0A= switch (event.type) {=0A= case 'mouseover': element =3D event.fromElement; break;=0A= case 'mouseout': element =3D event.toElement; break;=0A= default: return null;=0A= }=0A= return Element.extend(element);=0A= }=0A= =0A= Object.extend(methods, {=0A= stopPropagation: function() { this.cancelBubble =3D true },=0A= preventDefault: function() { this.returnValue =3D false },=0A= inspect: function() { return '[object Event]' }=0A= });=0A= =0A= Event.extend =3D function(event, element) {=0A= if (!event) return false;=0A= if (event._extendedByPrototype) return event;=0A= =0A= event._extendedByPrototype =3D Prototype.emptyFunction;=0A= var pointer =3D Event.pointer(event);=0A= =0A= Object.extend(event, {=0A= target: event.srcElement || element,=0A= relatedTarget: _relatedTarget(event),=0A= pageX: pointer.x,=0A= pageY: pointer.y=0A= });=0A= =0A= return Object.extend(event, methods);=0A= };=0A= } else {=0A= Event.prototype =3D window.Event.prototype || = document.createEvent('HTMLEvents').__proto__;=0A= Object.extend(Event.prototype, methods);=0A= Event.extend =3D Prototype.K;=0A= }=0A= =0A= function _createResponder(element, eventName, handler) {=0A= var registry =3D Element.retrieve(element, = 'prototype_event_registry');=0A= =0A= if (Object.isUndefined(registry)) {=0A= CACHE.push(element);=0A= registry =3D Element.retrieve(element, 'prototype_event_registry', = $H());=0A= }=0A= =0A= var respondersForEvent =3D registry.get(eventName);=0A= if (Object.isUndefined()) {=0A= respondersForEvent =3D [];=0A= registry.set(eventName, respondersForEvent);=0A= }=0A= =0A= if (respondersForEvent.pluck('handler').include(handler)) return = false;=0A= =0A= var responder;=0A= if (eventName.include(":")) {=0A= responder =3D function(event) {=0A= if (Object.isUndefined(event.eventName))=0A= return false;=0A= =0A= if (event.eventName !=3D=3D eventName)=0A= return false;=0A= =0A= Event.extend(event, element);=0A= handler.call(element, event);=0A= };=0A= } else {=0A= if (!Prototype.Browser.IE &&=0A= (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D = "mouseleave")) {=0A= if (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D = "mouseleave") {=0A= responder =3D function(event) {=0A= Event.extend(event, element);=0A= =0A= var parent =3D event.relatedTarget;=0A= while (parent && parent !=3D=3D element) {=0A= try { parent =3D parent.parentNode; }=0A= catch(e) { parent =3D element; }=0A= }=0A= =0A= if (parent =3D=3D=3D element) return;=0A= =0A= handler.call(element, event);=0A= };=0A= }=0A= } else {=0A= responder =3D function(event) {=0A= Event.extend(event, element);=0A= handler.call(element, event);=0A= };=0A= }=0A= }=0A= =0A= responder.handler =3D handler;=0A= respondersForEvent.push(responder);=0A= return responder;=0A= }=0A= =0A= function _destroyCache() {=0A= for (var i =3D 0, length =3D CACHE.length; i < length; i++) {=0A= Event.stopObserving(CACHE[i]);=0A= CACHE[i] =3D null;=0A= }=0A= }=0A= =0A= var CACHE =3D [];=0A= =0A= if (Prototype.Browser.IE)=0A= window.attachEvent('onunload', _destroyCache);=0A= =0A= if (Prototype.Browser.WebKit)=0A= window.addEventListener('unload', Prototype.emptyFunction, false);=0A= =0A= =0A= var _getDOMEventName =3D Prototype.K;=0A= =0A= if (!Prototype.Browser.IE) {=0A= _getDOMEventName =3D function(eventName) {=0A= var translations =3D { mouseenter: "mouseover", mouseleave: = "mouseout" };=0A= return eventName in translations ? translations[eventName] : = eventName;=0A= };=0A= }=0A= =0A= function observe(element, eventName, handler) {=0A= element =3D $(element);=0A= =0A= var responder =3D _createResponder(element, eventName, handler);=0A= =0A= if (!responder) return element;=0A= =0A= if (eventName.include(':')) {=0A= if (element.addEventListener)=0A= element.addEventListener("dataavailable", responder, false);=0A= else {=0A= element.attachEvent("ondataavailable", responder);=0A= element.attachEvent("onfilterchange", responder);=0A= }=0A= } else {=0A= var actualEventName =3D _getDOMEventName(eventName);=0A= =0A= if (element.addEventListener)=0A= element.addEventListener(actualEventName, responder, false);=0A= else=0A= element.attachEvent("on" + actualEventName, responder);=0A= }=0A= =0A= return element;=0A= }=0A= =0A= function stopObserving(element, eventName, handler) {=0A= element =3D $(element);=0A= =0A= var registry =3D Element.retrieve(element, = 'prototype_event_registry');=0A= =0A= if (Object.isUndefined(registry)) return element;=0A= =0A= if (eventName && !handler) {=0A= var responders =3D registry.get(eventName);=0A= =0A= if (Object.isUndefined(responders)) return element;=0A= =0A= responders.each( function(r) {=0A= Element.stopObserving(element, eventName, r.handler);=0A= });=0A= return element;=0A= } else if (!eventName) {=0A= registry.each( function(pair) {=0A= var eventName =3D pair.key, responders =3D pair.value;=0A= =0A= responders.each( function(r) {=0A= Element.stopObserving(element, eventName, r.handler);=0A= });=0A= });=0A= return element;=0A= }=0A= =0A= var responders =3D registry.get(eventName);=0A= =0A= if (!responders) return;=0A= =0A= var responder =3D responders.find( function(r) { return r.handler = =3D=3D=3D handler; });=0A= if (!responder) return element;=0A= =0A= var actualEventName =3D _getDOMEventName(eventName);=0A= =0A= if (eventName.include(':')) {=0A= if (element.removeEventListener)=0A= element.removeEventListener("dataavailable", responder, false);=0A= else {=0A= element.detachEvent("ondataavailable", responder);=0A= element.detachEvent("onfilterchange", responder);=0A= }=0A= } else {=0A= if (element.removeEventListener)=0A= element.removeEventListener(actualEventName, responder, false);=0A= else=0A= element.detachEvent('on' + actualEventName, responder);=0A= }=0A= =0A= registry.set(eventName, responders.without(responder));=0A= =0A= return element;=0A= }=0A= =0A= function fire(element, eventName, memo, bubble) {=0A= element =3D $(element);=0A= =0A= if (Object.isUndefined(bubble))=0A= bubble =3D true;=0A= =0A= if (element =3D=3D document && document.createEvent && = !element.dispatchEvent)=0A= element =3D document.documentElement;=0A= =0A= var event;=0A= if (document.createEvent) {=0A= event =3D document.createEvent('HTMLEvents');=0A= event.initEvent('dataavailable', true, true);=0A= } else {=0A= event =3D document.createEventObject();=0A= event.eventType =3D bubble ? 'ondataavailable' : 'onfilterchange';=0A= }=0A= =0A= event.eventName =3D eventName;=0A= event.memo =3D memo || { };=0A= =0A= if (document.createEvent)=0A= element.dispatchEvent(event);=0A= else=0A= element.fireEvent(event.eventType, event);=0A= =0A= return Event.extend(event);=0A= }=0A= =0A= =0A= Object.extend(Event, Event.Methods);=0A= =0A= Object.extend(Event, {=0A= fire: fire,=0A= observe: observe,=0A= stopObserving: stopObserving=0A= });=0A= =0A= Element.addMethods({=0A= fire: fire,=0A= =0A= observe: observe,=0A= =0A= stopObserving: stopObserving=0A= });=0A= =0A= Object.extend(document, {=0A= fire: fire.methodize(),=0A= =0A= observe: observe.methodize(),=0A= =0A= stopObserving: stopObserving.methodize(),=0A= =0A= loaded: false=0A= });=0A= =0A= if (window.Event) Object.extend(window.Event, Event);=0A= else window.Event =3D Event;=0A= })();=0A= =0A= (function() {=0A= /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A= Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */=0A= =0A= var timer;=0A= =0A= function fireContentLoadedEvent() {=0A= if (document.loaded) return;=0A= if (timer) window.clearTimeout(timer);=0A= document.loaded =3D true;=0A= document.fire('dom:loaded');=0A= }=0A= =0A= function checkReadyState() {=0A= if (document.readyState =3D=3D=3D 'complete') {=0A= document.stopObserving('readystatechange', checkReadyState);=0A= fireContentLoadedEvent();=0A= }=0A= }=0A= =0A= function pollDoScroll() {=0A= try { document.documentElement.doScroll('left'); }=0A= catch(e) {=0A= timer =3D pollDoScroll.defer();=0A= return;=0A= }=0A= fireContentLoadedEvent();=0A= }=0A= =0A= if (document.addEventListener) {=0A= document.addEventListener('DOMContentLoaded', = fireContentLoadedEvent, false);=0A= } else {=0A= document.observe('readystatechange', checkReadyState);=0A= if (window =3D=3D top)=0A= timer =3D pollDoScroll.defer();=0A= }=0A= =0A= Event.observe(window, 'load', fireContentLoadedEvent);=0A= })();=0A= =0A= Element.addMethods();=0A= =0A= /*------------------------------- DEPRECATED = -------------------------------*/=0A= =0A= Hash.toQueryString =3D Object.toQueryString;=0A= =0A= var Toggle =3D { display: Element.toggle };=0A= =0A= Element.Methods.childOf =3D Element.Methods.descendantOf;=0A= =0A= var Insertion =3D {=0A= Before: function(element, content) {=0A= return Element.insert(element, {before:content});=0A= },=0A= =0A= Top: function(element, content) {=0A= return Element.insert(element, {top:content});=0A= },=0A= =0A= Bottom: function(element, content) {=0A= return Element.insert(element, {bottom:content});=0A= },=0A= =0A= After: function(element, content) {=0A= return Element.insert(element, {after:content});=0A= }=0A= };=0A= =0A= var $continue =3D new Error('"throw $continue" is deprecated, use = "return" instead');=0A= =0A= var Position =3D {=0A= includeScrollOffsets: false,=0A= =0A= prepare: function() {=0A= this.deltaX =3D window.pageXOffset=0A= || document.documentElement.scrollLeft=0A= || document.body.scrollLeft=0A= || 0;=0A= this.deltaY =3D window.pageYOffset=0A= || document.documentElement.scrollTop=0A= || document.body.scrollTop=0A= || 0;=0A= },=0A= =0A= within: function(element, x, y) {=0A= if (this.includeScrollOffsets)=0A= return this.withinIncludingScrolloffsets(element, x, y);=0A= this.xcomp =3D x;=0A= this.ycomp =3D y;=0A= this.offset =3D Element.cumulativeOffset(element);=0A= =0A= return (y >=3D this.offset[1] &&=0A= y < this.offset[1] + element.offsetHeight &&=0A= x >=3D this.offset[0] &&=0A= x < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= withinIncludingScrolloffsets: function(element, x, y) {=0A= var offsetcache =3D Element.cumulativeScrollOffset(element);=0A= =0A= this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A= this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A= this.offset =3D Element.cumulativeOffset(element);=0A= =0A= return (this.ycomp >=3D this.offset[1] &&=0A= this.ycomp < this.offset[1] + element.offsetHeight &&=0A= this.xcomp >=3D this.offset[0] &&=0A= this.xcomp < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= overlap: function(mode, element) {=0A= if (!mode) return 0;=0A= if (mode =3D=3D 'vertical')=0A= return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A= element.offsetHeight;=0A= if (mode =3D=3D 'horizontal')=0A= return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A= element.offsetWidth;=0A= },=0A= =0A= =0A= cumulativeOffset: Element.Methods.cumulativeOffset,=0A= =0A= positionedOffset: Element.Methods.positionedOffset,=0A= =0A= absolutize: function(element) {=0A= Position.prepare();=0A= return Element.absolutize(element);=0A= },=0A= =0A= relativize: function(element) {=0A= Position.prepare();=0A= return Element.relativize(element);=0A= },=0A= =0A= realOffset: Element.Methods.cumulativeScrollOffset,=0A= =0A= offsetParent: Element.Methods.getOffsetParent,=0A= =0A= page: Element.Methods.viewportOffset,=0A= =0A= clone: function(source, target, options) {=0A= options =3D options || { };=0A= return Element.clonePosition(target, source, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!document.getElementsByClassName) document.getElementsByClassName = =3D function(instanceMethods){=0A= function iter(name) {=0A= return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' = " + name + " ')]";=0A= }=0A= =0A= instanceMethods.getElementsByClassName =3D = Prototype.BrowserFeatures.XPath ?=0A= function(element, className) {=0A= className =3D className.toString().strip();=0A= var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') = : iter(className);=0A= return cond ? document._getElementsByXPath('.//*' + cond, element) : = [];=0A= } : function(element, className) {=0A= className =3D className.toString().strip();=0A= var elements =3D [], classNames =3D (/\s/.test(className) ? = $w(className) : null);=0A= if (!classNames && !className) return elements;=0A= =0A= var nodes =3D $(element).getElementsByTagName('*');=0A= className =3D ' ' + className + ' ';=0A= =0A= for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A= if (child.className && (cn =3D ' ' + child.className + ' ') && = (cn.include(className) ||=0A= (classNames && classNames.all(function(name) {=0A= return !name.toString().blank() && cn.include(' ' + name + ' = ');=0A= }))))=0A= elements.push(Element.extend(child));=0A= }=0A= return elements;=0A= };=0A= =0A= return function(className, parentElement) {=0A= return $(parentElement || = document.body).getElementsByClassName(className);=0A= };=0A= }(Element.Methods);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.ClassNames =3D Class.create();=0A= Element.ClassNames.prototype =3D {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= },=0A= =0A= _each: function(iterator) {=0A= this.element.className.split(/\s+/).select(function(name) {=0A= return name.length > 0;=0A= })._each(iterator);=0A= },=0A= =0A= set: function(className) {=0A= this.element.className =3D className;=0A= },=0A= =0A= add: function(classNameToAdd) {=0A= if (this.include(classNameToAdd)) return;=0A= this.set($A(this).concat(classNameToAdd).join(' '));=0A= },=0A= =0A= remove: function(classNameToRemove) {=0A= if (!this.include(classNameToRemove)) return;=0A= this.set($A(this).without(classNameToRemove).join(' '));=0A= },=0A= =0A= toString: function() {=0A= return $A(this).join(' ');=0A= }=0A= };=0A= =0A= Object.extend(Element.ClassNames.prototype, Enumerable);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= ------=_NextPart_000_0000_01CAE94A.D5FD7610 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.seletlumieretv.org/blogue/wp-content/plugins/zd-scribd-ipaper/assets/lightview2.5/js/scriptaculous.js?load=effects,builder // script.aculo.us scriptaculous.js v1.8.2, Tue Nov 18 18:30:58 +0100 = 2008=0A= =0A= // Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= //=0A= // Permission is hereby granted, free of charge, to any person obtaining=0A= // a copy of this software and associated documentation files (the=0A= // "Software"), to deal in the Software without restriction, including=0A= // without limitation the rights to use, copy, modify, merge, publish,=0A= // distribute, sublicense, and/or sell copies of the Software, and to=0A= // permit persons to whom the Software is furnished to do so, subject to=0A= // the following conditions:=0A= //=0A= // The above copyright notice and this permission notice shall be=0A= // included in all copies or substantial portions of the Software.=0A= //=0A= // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A= // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A= // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A= // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A= // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A= // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A= // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A= //=0A= // For details, see the script.aculo.us web site: http://script.aculo.us/=0A= =0A= var Scriptaculous =3D {=0A= Version: '1.8.2',=0A= require: function(libraryName) {=0A= // inserting via DOM fails in Safari 2.0, so brute force approach=0A= document.write('